2016-02-27 59 views
0

我想在MySQL上使用加载数据infile功能,并且我的所有行都被跳过。我尝试了其他线程的所有解决方案,但找不到解决我的问题的解决方案。我做错了什么,MySQL继续跳过我的所有行?加载数据infile所有跳过行

查询

LOAD DATA LOCAL INFILE 'C:\\Stockton\\DataFiles\\emaimport.csv' INTO TABLE moving_average 
FIELDS TERMINATED BY ',' 
LINES TERMINATED BY '\n' 
(@col1, @col2, @col3) set [email protected],[email protected],[email protected]; 

表结构(仅插入到列MA15)数据的

CREATE TABLE `moving_average` (
    `ma_symbol` varchar(50) NOT NULL, 
    `ma_date` date NOT NULL, 
    `ma5` decimal(12,6) DEFAULT NULL, 
    `ma10` decimal(12,6) DEFAULT NULL, 
    `ma15` decimal(12,6) DEFAULT NULL, 
    `ma20` decimal(12,6) DEFAULT NULL, 
    `ma25` decimal(12,6) DEFAULT NULL, 
    `ma30` decimal(12,6) DEFAULT NULL, 
    `ma35` decimal(12,6) DEFAULT NULL, 
    `ma40` decimal(12,6) DEFAULT NULL, 
    `ma45` decimal(12,6) DEFAULT NULL, 
    `ma50` decimal(12,6) DEFAULT NULL, 
    `ma100` decimal(12,6) DEFAULT NULL, 
    `ma200` decimal(12,6) DEFAULT NULL, 
    PRIMARY KEY (`ma_symbol`,`ma_date`), 
    CONSTRAINT `fk_symbol_moving_average` FOREIGN KEY (`ma_symbol`) REFERENCES `company` (`symbol`) ON DELETE CASCADE ON UPDATE NO ACTION 
) ENGINE=InnoDB DEFAULT CHARSET=utf8; 

实施例被输入

TR,2016-02-18,29.919117000 
TR,2016-02-19,30.045367375 
TR,2016-02-22,29.994117375 
TR,2016-02-23,30.015367125 
TRC,2011-02-15,26.705000000 
TRC,2011-02-16,26.777500125 
TRC,2011-02-17,26.757499750 
TRC,2011-02-18,26.758750000 

回答

0

你的查询需要一个STR_TO_DATE函数为date字段。

像这样:

LOAD DATA LOCAL INFILE 'C:\\Stockton\\DataFiles\\emaimport.csv' INTO TABLE moving_average 
FIELDS TERMINATED BY ',' 
LINES TERMINATED BY '\n' 
(@col1, @col2, @col3) set [email protected],ma_date=STR_TO_DATE(@col2,'%Y-%m-%d'),[email protected]; 
+1

这仍然跳过所有行。 –

+0

@Fenriqe Duggledorf:您的数据示例也没有字符串格式的数据。应该是:'TR','2016-02-18',29.919117000' –