首页 文章

mysql workbench,从文件替换列

提问于
浏览
3

我有一个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 回答

  • 3

    好 . 我建议明确使用LOAD DATA INFILE . 对于那些没有使用它的人来说,现在就把它视为一个选择语句直到你看到它 .

    这是一篇关于性能和战略的好文章,名为Testing the Fastest Way to Import a Table into MySQL . 不要让 Headers 的mysql版本或文章内部吓跑你 . 跳到底部并得出一些结论:

    在不使用原始文件的情况下将表导入MySQL的最快方法是LOAD DATA语法 . 使用InnoDB的并行化可获得更好的结果,并记住调整基本参数,如事务日志大小和缓冲池 . 仔细的编程和导入可以使> 2小时的问题成为一个2分钟的过程 . 您可以暂时禁用某些安全功能以获得额外性能

    还有一些优点,主要是关于二级索引(你没有)的来回同行评论 . 其他人的重点是在事后添加它们 .

    我希望这些链接很有用 . 并且您的数据在10分钟内进入...(在另一个带有 LOAD DATA INFILE 的测试表中) .

    一般评论

    关于最慢的方法是通过while循环逐行编程语言 . 获得更快肯定是批处理,其中一个插入语句一次传递200到1k行 . 性能基本上是LOAD DATA INFILE . 最快的是原始文件(我做的,但超出了在这里讨论的范围) .

相关问题