csv データを mysql テーブルにロードする際に問題があります。
次のようなデータがあります。
Identity : name=Tomas, age=28, hoby=traveling;
Identity : name=Justin, age=29, hoby=Fhising;
こんな結果が欲しい
|field1|field2| field3 |
|tomas | 28 |traveling|
|justin| 29 | fhising |
LOAD DATA INFILE 'FILENAME.CSV'
INTO TABLE TABLENAME
(@f1, @f2, @f3)
FIELDS TERMINATED BY ','
LINES TERMINATED BY ';'
SET `field1` = SUBSTRING(@f1, LOCATE('name=', @f1)+5), `field2` = SUBSTRING(@f2, LOCATE('age=', @f2)+4), `field3` = SUBSTRING(@f3, LOCATE('hoby=', @f3)+5)
私はそれをテストしていないことに注意してください。したがって、エラーが発生する可能性があります。必要に応じて調整してください。
awk
プリプロセッサとして使用するでcsvファイルを前処理しawk
、呼び出しますLOAD DATA INFILE
awk -F[,=\;] '{print $2","$4","$6}' < FILENAME.CSV > PROPER.CSV
今mysqlで、
LOAD DATA INFILE 'PROPER.CSV'
INTO TABLE TABLENAME
FIELDS TERMINATED BY ','
LINES TERMINATED BY '\n'