100万件越えのCSVファイルをawkコマンドだけで簡単に準備する方法を紹介します。
環境・前提
- awkが実行できる
- 重要なのはデータ件数
- データの内容はこだわらない(下記程度)
- 連番
- パターン
- 乱数
awkスクリプトを準備
gen.awk
BEGIN {
srand();
printf("f1,f2,f3,f4\n");
for(i=1; i<=1000000; i++){
printf("%d,固定文字%08d,%d,%d\n",
i,
i+9000000,
i%3,
substr(rand(), 3) );
}
}
やってること
- 100万行のデータ
- ヘッダ行あり
- 4列CSV
列 | 目的 | 用途 |
---|---|---|
1 | 連番(1~) | primary key |
2 | 固定文字+連番(開始位置調整) | 氏名など |
3 | パターン | 性別や所属など |
4 | 乱数 | 電話番号など |
実行
$ awk -f gen.awk > 1000k.csv
確認
# 行数
$ wc -l 1000k.csv
1000001 1000k.csv
# 先頭3行
$ head -3 1000k.csv
f1,f2,f3,f4
1,固定文字09000001,1,576777
2,固定文字09000002,2,465325
# 最後3行
$ tail -3 1000k.csv
999998,固定文字09999998,2,29666
999999,固定文字09999999,0,412693
1000000,固定文字10000000,1,603937
簡単に速くテストデータを作成できました。
PerlやPythonで丁寧に書くまでもなく、DBもないような場合にいかがでしょうか。