2013-10-09 24 views
2

我正在使用在文件查詢中加載數據以將csv插入到表中。我必須在csv中格​​式化日期列,在文件中使用mysql加載數據格式化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」,「m-d-Y」,「m/d/y」,「m-d-y」,「Y-m-d」,「Y/m/d」。

所以我的查詢應該根據從CSV日期格式是,這樣我可以修改我的查詢,如,

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

OR

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

我怎樣才能請閱讀csv日期字段的格式?

回答

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 
    ) 
+0

感謝斯蒂芬。有效。我會添加更多的條件和匹配正則表達式。 –

+1

@RajeevR很高興我能幫上忙。歡呼:) – Stephan