加载数据Infile所有跳过行

时间:2016-02-27 04:55:29

标签: mysql

我正在尝试在MySQL上使用Load Data Infile功能,我的所有行都被跳过了。我已尝试过其他线程的所有解决方案但找不到解决我问题的解决方案。 MySQL继续跳过我的所有行,我做错了什么?

查询

LOAD DATA LOCAL INFILE 'C:\\Stockton\\DataFiles\\emaimport.csv' INTO TABLE moving_average
FIELDS TERMINATED BY ','
LINES TERMINATED BY '\n'
(@col1, @col2, @col3) set ma_symbol=@col1,ma_date=@col2,ma15=@col3;

表结构(仅插入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

1 个答案:

答案 0 :(得分:0)

您的查询需要date字段的STR_TO_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 ma_symbol=@col1,ma_date=STR_TO_DATE(@col2,'%Y-%m-%d'),ma15=@col3;