※注意:2015年5月末くらいに試した内容なので今後も使い続けられる方法かどうかはわかりません。
BigQueryにデータをインポートしたけど間違いがあったのでインポートし直したい、ということありますよね。
普通のDBみたいにtruncateやdeleteができれば楽なのですがBigQueryにはそのような機能は用意されていないようです。
しかし、クエリ実行のオプションを使うことで擬似truncateすることができたのでメモしておきます。
擬似truncate
まず、WebUIを開き、truncateしたいテーブルのselect文を書きます。この時、LIMIT 0
を付けておきます。
そして右下のShow Options
ボタンをクリックします。
Destination Table
に同じテーブルを指定し、Write Preference
をOverwrite table
にします。
データ量が多い場合はAllow Large Results
のチェックも必要です。
これで0件のレコードでテーブルが上書きされます。(擬似truncate)
同様にしてWHERE
を付ければ擬似delete、SELECT *
を変更することでカラム削除やカラム内容のスワップもできます。
注意点
- 擬似deleteをする場合は通常と条件が逆になります(残すレコードをSELECTする)
-
Destination Table
を間違えてもエラーにはならず、スキーマごとテーブルが上書きされます
本番データで間違えると悲惨なのでバックアップを忘れずに。