我有一个1,000,000行的.csv文件,我使用mySQL Workbench上传到一个表中,但我忘记在开始之前将日期设置为 YYYY-MM-DD
,所以它们都上传为 0000-00-00
.
上传百万条记录花了将近8个小时,所以我真的不想再重复一遍了,但是我无法弄清楚是否有办法让我从那里取代JUST那一列数据我最初上传的同一个文件,现在我已将日期更改为正确的格式 .
有谁知道这是否可能?
Edit
它是's WAY too long to post everything, but: here'的一些肉被取出:
CREATE TABLE myTable
( lineID int(11) NOT NULL AUTO_INCREMENT,
1 varchar(50) DEFAULT NULL,
2 varchar(1) DEFAULT NULL,
3 int(4) DEFAULT NULL,
4 varchar(20) DEFAULT NULL,
DATE date DEFAULT NULL,
PRIMARY KEY (lineID)
) ENGINE=InnoDB AUTO_INCREMENT=634205 DEFAULT CHARSET=utf8
版本是 5.6.20
截图:
1 回答
好 . 我建议明确使用LOAD DATA INFILE . 对于那些没有使用它的人来说,现在就把它视为一个选择语句直到你看到它 .
这是一篇关于性能和战略的好文章,名为Testing the Fastest Way to Import a Table into MySQL . 不要让 Headers 的mysql版本或文章内部吓跑你 . 跳到底部并得出一些结论:
还有一些优点,主要是关于二级索引(你没有)的来回同行评论 . 其他人的重点是在事后添加它们 .
我希望这些链接很有用 . 并且您的数据在10分钟内进入...(在另一个带有
LOAD DATA INFILE
的测试表中) .一般评论
关于最慢的方法是通过while循环逐行编程语言 . 获得更快肯定是批处理,其中一个插入语句一次传递200到1k行 . 性能基本上是LOAD DATA INFILE . 最快的是原始文件(我做的,但超出了在这里讨论的范围) .