2012-11-29 143 views
1

這個腳本加載失敗CSV數據

DROP TABLE IF EXISTS cmx_siusd_m1; 
CREATE TABLE cmx_siusd_m1(trade_date DATETIME, si_open DECIMAL(8,5), si_high DECIMAL(8,5), si_low DECIMAL(8,5), si_close DECIMAL(8,5), si_ticks INT, 

si_oi INT, PRIMARY KEY(trade_date)); 

LOAD DATA INFILE 'D:/datafolder/cmx_siusd_m1.csv' IGNORE INTO TABLE cmx_siusd_m1 FIELDS TERMINATED BY ',' 
IGNORE 1 LINES (@trade_date, si_open, si_high, si_low, si_close, si_ticks, si_oi) 
SET trade_date = STR_TO_DATE(@trade_date, '%Y.%m.%d %H:%i'); 

無法讀取該數據

2009.04.17 13:45,11.95000,11.97000,11.94000,11.96000,41,0 
2009.04.17 13:46,11.95000,11.97000,11.94000,11.95000,34,0 
2009.04.17 13:47,11.96000,11.97000,11.94000,11.96000,32,0 
2009.04.17 13:48,11.95000,11.97000,11.93000,11.96000,39,0 
2009.04.17 13:49,11.97000,11.98000,11.94000,11.97000,42,0 
2009.04.17 13:50,11.95000,11.98000,11.95000,11.97000,32,0 
2009.04.17 13:51,11.96000,11.98000,11.96000,11.96000,34,0 

我得到的錯誤,不正確的十進制值,不正確的整數值,和不正確的日期時間價值爲每個mysql中的列表。

+0

...完成,對不起,我已經看過這個:-) – ssn

+0

什麼字符終止您的CSV中的行? MySQL默認爲'\ n',但Windows生成的文件通常使用'\ r \ n'。您可能需要添加'LINES TERMINATED BY'子句。 – eggyal

+0

我剛剛添加了'LINES TERMINATED BY'\ r \ n',但沒有插入行。 (&我沒有錯誤) – ssn

回答

0

在評論中討論之後 - 你的問題是你的文本文件的格式。在嘗試\r\n\n行終止後,我們嘗試使用windows格式創建新文件,並且它可以正常工作。

所以問題是奇怪的文件格式,未知的行終止。如果你需要使用這種文件格式(它來自某些東西,你不想重新寫入每個導入的新文件) - 你可以在hexeditor中打開該文件並查看行尾的字符代碼。 (不是\r\n)。

+0

是的,它可能是交換線路終端......我還沒有嘗試,看看;但我想我也會分享,當我將數據複製到一個新的csv文件時,文件大小實際上減半了!所以是的,這是一種奇怪的格式 – ssn