4

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 |
4

1 に答える 1

1

set式で直接LOADDATAINFILEを使用する

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'
于 2012-11-30T01:10:34.930 に答える