IDが違うだけのデータでいいから大量のテストデータが欲しい時などに、以下の手順を踏めばサクッと大量データを登録できます。
LOAD DATAのファイルのインポート設定
MySQL Workbenchで以下のコマンドを実行し設定がONになっているか確認する。
SHOW VARIABLES LIKE 'local_infile';
local_infileの設定がONになっていない場合、以下のコマンドを実行しファイルのインポートを有効化する。
SET GLOBAL local_infile = 1;
次にMySQL WorkbenchのMySQL ConnectionsからManage Server Connections の画面を表示して、 「Connection」タブの「Advanced」タブを選択します。
そうすると「Others」という入力項目があるので、そこに「OPT_LOCAL_INFILE=1」を追加します。
以上で設定は完了です。
awkコマンドで大量のテストデータをCSV形式で作成
BEGIN {
# ヘッダー行を出力
print "user_id,user_name,age"
value=",\"test_user\",20"
# 1万件のテストデータを出力
for (i = 1; i <= 10000; i++) {
print i value;
}
}
出力するデータは実際に使用するデータベースのテーブルの定義に従って作成してください。
今回の例ではuser_id, user_name, ageカラムのあるユーザーテーブルのテストデータを作成しています。
上記のスクリプトを作成後以下のコマンドを実行してCSVファイルに出力。
awk -f test.awk > test.csv
そうすると以下のような内容のテストデータが大量に作成できます。
user_id,user_name,age
1,"test_user",20
2,"test_user",20
3,"test_user",20
~以下略~
MySQL Workbenchからインポート
MySQL Workbenchで以下のコマンドを実行することで作成したCSVファイルのテストデータを一括でデータベースに登録できます。
LOAD DATA LOCAL INFILE '/Users/user1/Documents/test.csv'
INTO TABLE users
FIELDS TERMINATED BY ','
ENCLOSED BY '"'
LINES TERMINATED BY '\n'
IGNORE 1 ROWS
作成したCSVファイルでダブルクォーテーションが使用されている場合は、ENCLOSED BY オプションを使用すると、指定した文字に囲まれたフィールドの値が正しく読み込まれ、フィールド値に含まれる区切り文字(例えば、カンマ)がフィールドの区切りとして誤って解釈されることを防ぐことができます。
LOAD DATA LOCAL INFILEやLINES TERMINATED BYはWindowsかMacで書き方や設定する内容が異なってくるので、それぞれの環境に合わせて設定してみてください。
以上で終わりです!