ゴツいCSVファイルをなんとかしてINSERT文に書き換える

Spacemacsに取り込めない50万行くらいあるCSVを、SQLに書き換えてDBに適用する必要があった。

こういう時、毎回コマンドラインを調べてる気がするのでまとめる。

改行コードCRLF -> LF

元データがExcelのシートで来たので。

cat data.csv | sed -e 's/\r\n/\n/g'

重複行削除

データに重複が混じっていたので。

sort data.csv > sort.csv
# 件数が変わっていないことを確認
wc -l *.csv

uniq sort.csv > data.csv

1行目にinsert文を書く

echo 'insert into xxx (...) values' > insert.sql

各行をSQLのパーツに使えるようにフォーマットして2行目以降に配置する

cat unique.csv | sed -e 's/^/(/g' | sed -e 's/$/),/g' >> insert.sql

最終行だけ ,; にする

sed -e '$s/,$/;/g' insert.sql > complete.sql

これで source すればok。 これ絶対また忘れるわ。