togatttiのエンジニアメモ

過度な期待はしないでください.

MySQLへダミーデータを作成する

はじめに

MySQLに対してロードの検証を行うためにダミーデータを用意する必要が
あったので、ダミーデータの取得からMySQLへの挿入までの流れをメモしておく。

バージョンは5系。

ダミーデータはここで手に入れた。

今回は疑似個人情報データ生成サービスからcsv形式でダウンロードし、
それをMySQLへ挿入することにした。

ダミーデータの作成

使い方は簡単ではじめに下記のような条件が選べるので、必要なものを選び
生成開始を押すだけ。

f:id:togattti1990:20131008081125j:plain

次にこのような画面が出てくるので、CSV形式でダウンロード。
とりあえずhogehoge.csvとしておく。

f:id:togattti1990:20131008080958j:plain

MySQLへ挿入

mysqlクライアントを開いて、下記のスクリプトでテスト用テーブルを作成。

mysql> CREATE TABLE test.sample(id INT,name VARCHAR(30),kana_name VARCHAR(30),sex VARCHAR(10),tel VARCHAR(20),birth VARCHAR(30));

f:id:togattti1990:20131008205002j:plain

そして、CSVファイルをMySQLに挿入するためにはLOCAL DATA FILE ~を使う。
「TERMINATED BY ','」でCSVの文字列を「,」で区切り、後述のカラムに挿入を行う。
「TERAMINATED BY '\t'」とすれば、タブで区切ることもできるので、覚えておく。

mysql> LOAD DATA LOCAL INFILE 'hogehoge.csv' INTO TABLE sample FIELDS TERMINATED BY ',' (id,name,kana_name,sex,tel,birth);

こんな感じ。
作成したCSVでは一行目に項目が入っていて、「,」で区切られていないため、利用する際は削除してください。

f:id:togattti1990:20131008204947j:plain

おまけにPHPから挿入するスクリプトも書いてみた。

PHPで書くときにはPDOオブジェクトを呼び出す際に、

array(PDO::MYSQL_ATTR_LOCAL_INFILE => true)

を設定する必要があリ、この記述でLOAD LOCAL INFILE を有効にする。

これなしでやると

PHP Warning:  PDO::exec(): LOAD DATA LOCAL INFILE forbidden in /var/www/html/database.php on line 13

というようなエラーが出る。

以上。