CSV行をデータベースに入れる

スプレッドシートの出力があり、テーブルにseedするINSERT文が必要です。クォートとNULLを正しく処理する早い方法です。

このガイドで使う道具

やりたいこと

開発DBのseedや小さなマスタ表の移行は、行をINSERTに変換する作業です。手でやると'O'Brienのアポストロフィが行を静かに壊す、定番のバグを踏みます。

変換方法

CSVを貼り、テーブル名を設定して実行します。先頭行が列名になり、数値に見える値はクォートなし、それ以外は''エスケープ付きでシングルクォート、空セルは既定でNULLになります。バッチサイズは大きいデータ向けに1INSERTあたりの行数を調整します。

  • ヘッダなし: column1, column2…という列名を出力で改名できます。
  • 区切りはカンマ・セミコロン・タブを自動判定します。

具体例

name,city,rateと2行のデータからINSERT INTO customers (name, city, rate) VALUES ('Ada''s Bakery', 'London', 4.5), ('Grace', NULL, 3);が出ます。アポストロフィは''として残り、空セルはNULL、数値は数値のままです。

対応範囲

素のVALUES INSERTのみで、CREATE TABLE・ON CONFLICT・方言構文は出しません。大事な環境へ流す前に文を必ず確認してください。30万文字・2万行まで。