我有一个大的CSV文件,我无法在excel中完全打开。
我有一个脚本可以将这些数据导入MySQL,该脚本会转换一些日期列并导入其他所有内容:
LOAD DATA LOCAL INFILE 'A:\\My Files\\Desktop\\SPX\\Book2.csv'
INTO TABLE spx_options_data2
COLUMNS TERMINATED BY ','
OPTIONALLY ENCLOSED BY '"'
ESCAPED BY '"'
LINES TERMINATED BY '\n'
IGNORE 1 LINES
(@date, symbol, under, @expiration, strike, put_call, bid, ask, price, volume, open_interest, implied_vol, delta, gamma, rho, theta, vega, nonstd)
SET date = STR_TO_DATE(@date, '%d/%m/%Y'),
expiration = STR_TO_DATE(@expiration, '%d/%m/%Y'),
implied_vol = IF(implied_vol = "",NULL,implied_vol);
当我尝试导入整个文件时,大多数行都被跳过,导入的小数据的日期字段为0000-00-00。 MySQL提供的错误响应片段是:
580行受影响,64警告:............ 1411日期时间不正确 价值:' 2014-01-02' for function str_to_date 1048 Column' date'不能 是null ......... 1411日期时间值不正确:' 2014-01-18'功能 STR_TO_DATE .........。记录:1333176已删除:0 已跳过:1332596 警告:7354726
但是如果我:
我获得了更好的成功:
1035456行受影响,64警告:.......... 1292截断错误 DECIMAL值:'' ............... 1062重复录入 ' 2014年1月2日,SPX-1450-C-2014年1月18日'关键' PRIMARY' ...............。 1366 十进制值不正确:''对于列' implied_vol'在第2262行...... 记录:1048575已删除:0 跳过:13119 警告:52540
问题
谢谢你的帮助!
答案 0 :(得分:0)
感谢ADyson:
Q1。将大型CSV文件导入MySQL的最佳方法是什么?
在Notepad ++中查看文件以确保格式符合预期,特别是日期。
Q2。为什么我得到上面的不同结果(在第二种情况下导入1035456行,在第一种情况下只导入580),即使数据来自相同的源和格式?
不知道,不重要,固定。
Q3。为什么要跳过这么多行?
主要关键问题是阻止导入数据。再一次,在Notepad ++中查看并注意到一些问题解决了这个问题。