Bri*_*ell 6 mysql mysql-workbench
我有一个1,000,000行.csv文件,该文件是使用mySQL Workbench上传到表中的,但是我忘了YYYY-MM-DD在开始之前设定日期,因此它们都以的形式上传0000-00-00。
上百万条记录花了将近8个小时,所以我真的不想再做一次,但是我不知道是否有办法替换一下列表中的一列数据。现在我将日期更改为正确的格式,所以我最初上传的文件与该文件相同。
有人知道这是否可能吗?
编辑
发布所有内容的时间太长了,但是:这里show create table有一些肉被取出:
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
Run Code Online (Sandbox Code Playgroud)
版本是5.6.20
好。我建议显式使用LOAD DATA INFILE。对于尚未使用过的用户,将其视为一条选择语句,直到您看到为止。
这是一篇有关性能和策略的不错的文章,标题为“ 测试将表导入MySQL的最快方法”。不要让标题的mysql版本或文章内的内容吓e您。跳到最底下,得出一些结论:
无需使用原始文件即可将表导入MySQL的最快方法是LOAD DATA语法。对InnoDB使用并行化以获得更好的结果,并记住调整基本参数,例如事务日志大小和缓冲池。仔细的编程和导入可能会使2小时以上的问题变成2分钟的过程。您可以暂时禁用某些安全功能以提高性能
那里也有一些要点,主要是在关于二级索引(您没有)的同行评论中来回回荡。对于其他人而言,重要的一点是在事实之后添加它们。
我希望这些链接有用。您的数据将在10分钟内(在另一个带有的测试表中LOAD DATA INFILE)输入。
最慢的方法是通过编程语言通过while循环逐行进行。一定要提高速度,这是批处理,一次插入一条语句一次传递200至1k行。LOAD DATA INFILE的性能显着提高。最快的是原始文件(我该怎么做,但超出了此处的讨论范围)。