mysqlでcsvを新規テーブルにインポートする
mysqlのversionは5.7.19 14.14(<-mysql コマンドのバージョン)です.
mysqlに入る
$ mysql --local_infile=1 -u root
--local_infile=1はエラー対策です.
$mysql -u root
で入って
mysql> LOAD DATA LOCAL INFILE ‘filename.csv’ INTO TABLE table_name FIELDS TERMINATED BY ‘,’ ENCLOSED BY ’“;
をした時に
ERROR 1148(4200): The used command is not allowed with this MYSQL version
と出てしまう!
参考:
忘れがちな記憶へ ERROR 1148 (42000): The used command is not allowed with this MySQL version問題
使うDBを作成する
mysql> CREATE DATABASE database_name;
csvを入れるためのテーブルを作成する
この時カラムなども指定する.
mysql>CREATE TABLE database_name.table_name( col_name1 data_type1, col_name2 data_type2, ... );
使うデータベースを指定する
mysql> USE database_name;
これをしないと
ERRER 1046 (3D000):No database selected
って出た.
csvをインポートする
mysql> LOAD DATA LOCAL INFILE ‘filename.csv’ INTO TABLE table_name FIELDS TERMINATED BY ‘,’ ENCLOSED BY ’“;
できたらこのような表示が出て終了!
Query OK, 2279299 rows affected, 65535 warnings (9 min 29.76 sec)
Records: 2279299 Deleted: 0 Skipped: 0 Warnings: 4558602
めっちゃインポートした!200万レコード..
【おまけ】試しに最初の10列を表示してみる
mysql> SELECT col_name1,col_name2 FROM table_name ORDER BY col_nameN LIMIT 10;
で表示できる.
追記
別のPCで同じ作業をやる事になったのでこの通りにやってみたが再現性がなかった.
ERROR 1148 (42000): The used command is not allowed with this MySQL version
というエラーに対して,
@@local_infileを1にする事で解決した.
@@local_infileの確認
SELECT @@local_infile;
1に変更
SET PERSIST local_infile= 1;