テクニカル雑記帳です
CSVファイルをtableへまるごと取り込む
load data infile を使う
-- ※localなのでlocalオプションを追加しています
LOAD DATA LOCAL INFILE 'HOKKAI.CSV'
INTO TABLE zipcode
FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"' LINES TERMINATED BY '\r\n';
エラーが発生
- エラー内容
ERROR 1148 (42000): The used command is not allowed with this MySQL version
調べたところ、「セキュリティ的な問題で、権限がないとできないよ。」ということらしい。
なので、一度 quit
して以下でDBに入る。
$ sudo mysql --local_infile=1 -u username -p password
これで、権限については解消される。
- 次に、こんなエラーが・・・
ERROR 1300 (HY000): Invalid utf8 character string: '"'
「読み込もうとしたファイルがutf8じゃないよ。」と言われている。
→DBをsjisに変えます・・・
set character_set_database=sjis;
これでOK。
再度、以下を実行して完了。
LOAD DATA LOCAL INFILE 'HOKKAI.CSV'
INTO TABLE zipcode
FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"' LINES TERMINATED BY '\r\n';
Query OK, 8253 rows affected (0.09 sec)
Records: 8253 Deleted: 0 Skipped: 0 Warnings: 0
結論
- 権限をつけてDBに入ること
- 文字コードを確認すること
LOAD DATA [LOCAL] INFILE '取り込みたいCSVファイルのパス'
INTO TABLE tablename
FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"' LINES TERMINATED BY '\r\n';