きっかけ
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 BY | csvのカラムの区切り文字 |
LINES TERMINATED BY | csvの1行の終端文字 |
IGNORE 1 ROWS | 1行目のデータを無視 ※ヘッダー行の無視などで使う |
上記であれば、Workbenchのcsvインポート機能と比較すると、かなり高速でインポートできます。
Error Code: 3948が発生した場合
LOAD DATA文を使うと、Error Code: 3948が発生することがあります。
これは、クライアント側とサーバー側にとあるオプションを設定しないといけませんといった内容です。
Workbenchの場合は以下が参考になります。
サーバー側が、DockerでMySQLを構築している場合は、以下が参考になります。