2012-11-29 59 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