テストデータとかDMLを沢山つくりたいとき、Excelで Insert 文作ったりしますよね。

でもパターンや対象テーブルが多いとちょっと面倒です。

ここはひとつ awk つかった方が幸せになれるかもです。

こんな感じのCSVファイルを用意して、

vi ~/tmp/sample_tbl.csv

id,name,password
user0001,hoge,fuga
user0002,foo,moge
user0003,bar,fuge
user0004,gor,hage
user0005,ver,boge

sample_tblテーブルへのINSERT文をawsで作るための設定ファイルを作ります

vi ~/tmp/sample_tbl.awk

BEGIN {
    print "INSERT INTO `sample_tbl` (`id`, `name`, `password`) VALUES"
}
NR > 1 && NR < = 5 {
    # \047 はシングルクウォート
    printf "("
    printf "\047"$1"\047,"
    printf "\047"$2"\047,"
    printf "\047"$3"\047"
    print "),"
}
NR > 5  {
    printf "("
    printf "\047"$1"\047,"
    printf "\047"$2"\047,"
    printf "\047"$3"\047"
    print ");"
}

最後に awk を実行してSQL文を作ると

cd ~/tmp

awk -F “,” -f sample_tbl.awk sample_tbl.csv > insert_sample_tbl.sql

こんな感じになります。

vi insert_sample_tbl.sql

INSERT INTO `sample_tbl` (`id`, `name`, `password`) VALUES
('user0001','hoge','fuga'),
('user0002','foo','moge'),
('user0003','bar','fuge'),
('user0004','gor','hage'),
('user0005','ver','boge');