mysql workbench,从文件中替换列

标签 mysql mysql-workbench

我有一个 1,000,000 行的 .csv 文件,我使用 mySQL Workbench 上传到一个表中,但我忘记在开始之前将日期设为 YYYY-MM-DD,所以它们都上传为 0000-00-00

上传百万条记录花了将近 8 个小时,所以我真的很想不必重新做一遍,但我不知道是否有办法让我只替换那一列来 self 最初上传的同一个文件的数据,现在我已经将日期更改为正确的格式。

有人知道这是否可行吗?

编辑

发布所有内容太长了,但是:这里是 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

版本是5.6.20

截图: enter image description here

最佳答案

好的。我建议使用 LOAD DATA INFILE明确地。对于那些还没有使用过它的人,在您看到它之前,暂时将其视为一个 select 语句。

这是一篇关于性能和策略的好文章,标题为 Testing the Fastest Way to Import a Table into MySQL .不要被标题或文章里面的 mysql 版本吓跑了。跳到底部并得出一些结论:

The fastest way you can import a table into MySQL without using raw files is the LOAD DATA syntax. Use parallelization for InnoDB for better results, and remember to tune basic parameters like your transaction log size and buffer pool. Careful programming and importing can make a >2-hour problem became a 2-minute process. You can disable temporarily some security features for extra performance

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

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

一般评论

最慢的方法是在编程语言中通过 while 循环逐行执行。越来越快肯定是批处理,其中一个插入语句一次传递 200 到 1k 行。性能大幅提升的是 LOAD DATA INFILE。最快的是原始文件(我所做的,但超出了这里讨论的范围)。

关于mysql workbench,从文件中替换列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32702213/

相关文章:

MySql Server 8 将表名更改为区分大小写

mysql - 如何正确调用不带out参数的MySQL存储过程?

mysql - 从 Symfony 2 中的数据库中删除

mysql - 迁移php4/mysql4到php5/mysql5 : switch to InnoDB?

php - 水平数据的平均值 mysql php

MySQL 错误 : Access denied for user root@localhost

mysql - MySQL返回列中包含任何但仅包含集合中的关键字的所有行

mysql - 如何在 SQL 中显示表中不存在的列中的值并在其旁边显示零?

php - 我的 php 代码无法在主机中创建目录

mysql - #1215 - 无法添加外键约束