スポンサーリンク

MySQL Workbenchでcsvインポートを高速で行う

きっかけ

MySQLには、Tableの右クリックメニューで、Table Data Import Wizardという機能で、テーブルにCSVデータをインポートできるのですが、これが非常に遅く、UTF-8だとうまく動かなかったりと、微妙な感じでした。

そのため、別のやり方でcsvデータをインポートしたときのことを備忘録として残します。

高速でCSVインポート

結論から言うと、MYSQLにはLOAD DATA LOCAL INFILE文というものがあり、それを使ったやり方であれば高速でCSVインポートできます。

以下のような感じで、csvをインポートできます。

LOAD DATA LOCAL INFILE "C:/data.csv" 
	INTO TABLE testdb.employee
	FIELDS TERMINATED BY ','
	LINES TERMINATED BY '\n'
	IGNORE 1 ROWS
オプションオプションの説明
FIELDS TERMINATED BYcsvのカラムの区切り文字
LINES TERMINATED BYcsvの1行の終端文字
IGNORE 1 ROWS1行目のデータを無視 ※ヘッダー行の無視などで使う

上記であれば、Workbenchのcsvインポート機能と比較すると、かなり高速でインポートできます。

Error Code: 3948が発生した場合

LOAD DATA文を使うと、Error Code: 3948が発生することがあります。
これは、クライアント側とサーバー側にとあるオプションを設定しないといけませんといった内容です。

Workbenchの場合は以下が参考になります。

サーバー側が、DockerでMySQLを構築している場合は、以下が参考になります。