ゴツい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。 これ絶対また忘れるわ。