31
30

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

BigQueryで擬似truncate・擬似delete

Posted at

※注意:2015年5月末くらいに試した内容なので今後も使い続けられる方法かどうかはわかりません。

BigQueryにデータをインポートしたけど間違いがあったのでインポートし直したい、ということありますよね。
普通のDBみたいにtruncateやdeleteができれば楽なのですがBigQueryにはそのような機能は用意されていないようです。

しかし、クエリ実行のオプションを使うことで擬似truncateすることができたのでメモしておきます。

擬似truncate

まず、WebUIを開き、truncateしたいテーブルのselect文を書きます。この時、LIMIT 0を付けておきます。
そして右下のShow Optionsボタンをクリックします。
bq_truncate_01.png

Destination Tableに同じテーブルを指定し、Write PreferenceOverwrite tableにします。
データ量が多い場合はAllow Large Resultsのチェックも必要です。
bq_truncate_02.png

これで0件のレコードでテーブルが上書きされます。(擬似truncate)

同様にしてWHEREを付ければ擬似delete、SELECT *を変更することでカラム削除やカラム内容のスワップもできます。

注意点

  • 擬似deleteをする場合は通常と条件が逆になります(残すレコードをSELECTする)
  • Destination Tableを間違えてもエラーにはならず、スキーマごとテーブルが上書きされます

本番データで間違えると悲惨なのでバックアップを忘れずに。

31
30
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
31
30

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?