LoginSignup
6
0

単純な大量のテストデータをMySQL Workbenchから登録する方法

Last updated at Posted at 2023-12-20

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形式で作成

test.awk
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 INFILELINES TERMINATED BYはWindowsかMacで書き方や設定する内容が異なってくるので、それぞれの環境に合わせて設定してみてください。

以上で終わりです!

6
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
0