https://dev.mysql.com/doc/refman/5.6/ja/load-data.html
LOAD DATA INFILE [filepath] INTO TABLE [db.table]
※実行する際のmysqlアカウントにはFILE権限が必要です。
local-infileを有効にする
/etc/my.cnf
[server]
local-infile=1
INSERT ステートメントを使用する場合より、20 倍速くなる
https://dev.mysql.com/doc/refman/5.6/ja/insert-speed.html
LOAD DATA INFILE では、データ解釈や重複キーのエラーによって操作が終了する。 重複しないデータが混じっていたとしても、重複キーがあれば何もINSERTされず終了する。
LOAD DATA INFILE xxx INTO TABLE xxx
PDO::exec(): SQLSTATE[23000]: Integrity constraint violation: 1062 Duplicate entry '1' for key 'PRIMARY'
IGNOREをつけると一意のキー値に関して既存の行は無視し新しい行だけ登録する。
LOAD DATA INFILE xxx IGNORE INTO TABLE xxx
REPLACEをつけると一意のキー値に関して既存の行は置き換えられます。新規行は登録されます。
LOAD DATA INFILE xxx REPLACE INTO TABLE xxx
一行飛ばす
IGNORE 1 LINES
FIELDS TERMINATED BY ',' :
テーブルの主キーに重複した値を入れようとするとエラーになる
PDO::exec(): SQLSTATE[23000]: Integrity constraint violation: 1062 Duplicate entry '1' for key 'PRIMARY'