2

csv をテーブルに挿入するために Load data in file クエリを使用しています。csv 内の日付列をフォーマットする必要があります。

LOAD DATA INFILE '/invoices/invoice1381301986.csv' INTO TABLE invoice_table FIELDS TERMINATED BY ',' ENCLOSED BY '"' LINES TERMINATED BY '\n' (`code`,@var1)  set datefield=STR_TO_DATE(@var1, '%m/%d/%Y');

上記のクエリを使用して日付をフォーマットできます。

しかし問題は、csv 日付列の形式が異なることです。可能な形式は、「m/d/Y」、「mdY」、「m/d/y」、「mdy」、「Ymd」、「Y/m/d」です。

私のクエリはcsvの日付形式に従う必要があるため、クエリを次のように変更できます。

datefield=STR_TO_DATE(@var1, '%m/%d/%Y')

また

datefield=STR_TO_DATE(@var1, '%m-%d-%Y')..

csv 日付フィールドの形式をどのように読み取ることができますか?

4

1 に答える 1

3

を使用する必要がありますCASE:

LOAD DATA INFILE '/invoices/invoice1381301986.csv' 
    INTO TABLE invoice_table 
    FIELDS TERMINATED BY ',' 
    ENCLOSED BY '"' 
    LINES TERMINATED BY '\n' 
    (`code`,@var1)  
    SET datefield= (
        CASE
            WHEN @var1 REGEXP '[0-9]{2}/[0-9]{2}/[0-9]{4}' THEN STR_TO_DATE(@var1,'%m/%d/%Y')
            ...
        END
    )
于 2013-10-09T12:33:34.610 に答える