- ベストアンサー
CSVの特定のフィールドをインポート
load data local infileでcsvをインポートしているのですが ヘルプなどを見ても特定のフィールドのみを選択する方法がよく分かりません たとえば csv:フィールドA、フィールドB、フィールドC、フィールドD、フィールドE、フィールドF MySQL:カラム1、カラム2、カラム3、カラム4、カラム5 だとします、それを フィールドA→カラム2 フィールドC→カラム3 フィールドD→カラム4 フィールドF→カラム5 という風に選択したいのですがどういう風に指定したらいいのでしょうか? よろしくお願いします。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
オプションは順に記述する必要があるので、後ろではなく、変数指定の前(テーブル名の後)に記述する必要があります。 LOAD DATA INFILE 'file_name' INTO TABLE table_name FIELDS TERMINATED BY ';' ENCLOSED BY '"' LINES TERMINATED BY '¥r¥n' IGNORE 1 LINES (@fieldA, @fieldB, @fieldC, @fieldD, @fieldE, @fieldF) SET col2=@fieldA, col3=@fieldC, col4=@fieldD, col5=@fieldF; No1 の方がマニュアルへのリンクを張ってくれているので、一度目を通されるといいと思います。
その他の回答 (2)
- yuu_x
- ベストアンサー率52% (106/202)
LOAD DATA INFILE 'file_name' INTO TABLE table_name (@fieldA, @fieldB, @fieldC, @fieldD, @fieldE, @fieldF) SET col2=@fieldA, col3=@fieldC, col4=@fieldD, col5=@fieldF;
補足
回答ありがとうございます。 この後ろに FIELDS TERMINATED BY ';' ENCLOSED BY '"' LINES TERMINATED BY '¥r¥n' IGNORE 1 LINES; を付けたら以下のエラーになります、どうしてでしょうか? ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'FIELDS TERMINATED BY ';' ENCLOSED BY '"'
- yambejp
- ベストアンサー率51% (3827/7415)
LOAD DATA INFILE 'file.txt' INTO TABLE t1 (column1, @dummy, column2, @dummy, column3); と公式にかいてありますね (捨てたいデータは変数にわりあてて利用しない)
お礼
ありがとうございます、本当に助かりました。