2012-07-20 115 views
0

我知道這個問題之前已被問過,但由於某種原因,我仍然沒有運氣。我正在嘗試導入CSV文件並將日期字段轉換爲正確的mysql格式(YYYY-MM-DD)。我應該注意到,csv中的一些記錄有一個空值「',用於日期值。不知道這是否意味着什麼。我還應該提一下,我已經在這張表中記錄了。它不是空的。我試着運行這個,但沒有運氣導入CSV到MySQL並轉換日期

load data local infile '/Users/Path/To/CSV/file.csv' 
into table donor fields terminated by ',' 
lines terminated by '\n' (@date,INSTRUCTIONS) 
set date = STR_TO_DATE(@date, '%Y-%m-%d') 

我得到NULL返回所有的人。有任何想法嗎?

回答

1

如果您只進行一次這樣的操作,並且該表爲空以便啓動,則可以運行導入,但首先需要更改表,以便日期列的類型爲VARCHAR。然後運行UPDATE table SET date = str_to_date(date, '%m/%d/%Y'),並將列轉換回DATETIME或DATE。

您也可以添加格式爲DATE的第二個日期列,以格式VARCHAR導入第一個日期列,然後運行UPDATE table SET date2 = str_to_date(date1, '%m/%d/%Y'),然後刪除varchar列。

重要的是要注意STR_TO_DATE()的第二個參數是輸入格式,而不是結果格式。因此,在第二個參數中,您指示MySQL CSV中的日期格式爲Y-m-d。如果它實際上是m/d/Y,則應該使用STR_TO_DATE(@date_date,'%m /%d /%Y)'。

希望這有助於...

1

這可能是正確─

​​

你爲什麼要採取@date_date而不是@date?我認爲你得到這個,因爲這被認爲是不完整的值,所以返回NULL。請參閱MySQL docs