MySQL工作台表数据导入向导极慢

Posted

技术标签:

【中文标题】MySQL工作台表数据导入向导极慢【英文标题】:MySQL workbench table data import wizard extremely slow 【发布时间】:2016-01-22 15:35:10 【问题描述】:

我需要将包含 2000 万行和 2 列的 csv 文件导入数据库,但是当我尝试使用 mysql Workbench 的数据导入向导执行此操作时,速度非常慢,可能需要 1 个月才能完成,看起来在进度条上。

我希望有一些更快的方法来做到这一点。

【问题讨论】:

我为一个家伙写了This Answer。将他 8 小时的导入时间缩短到一分钟左右。看起来很极端,但他就是这么说的。 【参考方案1】:

始终使用Load Data Infile 作为海量数据集的首次尝试。

Load Data Infile上的Mysql手册页。

为这个问题写了几个答案,但要进行同行比较,请参阅此人的问题和我的 Answer 以及他对 Workbench 与 Load Data Infile 的时间比较。

【讨论】:

如果这对任何人都有帮助,我仍然在第一行数据上使用导入向导,因为它有一个不错的向导来从 csv 构建表。然后使用“Load Data Infile”命令填充表格。它是一种很好的混合方法。真可惜,用户界面在引擎盖下不能以这种方式工作。按照现在的编码,它作为批量导入毫无价值。 感谢@raider33 的分享 请注意,此解决方案将在 30 秒后超时。很多人都在谈论“wait_timeout”,但在 28800 秒时,您会认为它会持续超过 30 秒。【参考方案2】:

这是另一种选择。 将您的 CSV 数据转储到 sql 脚本中,您需要为此编写一些代码。 基本上,您的 csv 数据将转换为类似于以下命令INSERT INTO TABLE_NAME values(1,2),(1,3),....; 现在使用 MySQL shell 脚本并使用 SOURCE 命令 mysql> 源 C:/Users/Desktop/sql 脚本/script.sql 与直接为数百万条记录导入 CSV 相比,您的数据导入速度更快。

【讨论】:

【参考方案3】:

如果您不想编写代码,我建议您尝试其他免费的 GUI 客户端,例如 HeidiSQL。它导入 CSV/文本文件的速度比 MySQL Workbench 快得多。

【讨论】:

【参考方案4】:

我在 MySQL 工作台上遇到了类似的问题。 我找到的替代方法是 Toad for MySQL (https://www.toadworld.com/m/freeware/1469)

通过 MySQL 管理员连接到远程 MySQL 服务器需要 40 分钟。在 MySQL 服务器本身上,上传需要几分钟。使用 toad,我可以连接到远程服务器并在几分钟内上传。我确实尝试过 HeidiSQL,但没有发现它对导入很友好。

【讨论】:

【参考方案5】:

总是喜欢加载数据文件来导入数据集,不方便的是=>你必须在导入之前创建一个表结构。导入向导允许您直接从 csv 或 json 动态创建新表。

我认为这种缓慢的原因是:workbench 使用 python 作为导入向导。可以在导入向导的日志中看到出错时是python的控制台日志。

如果您出于任何原因不想创建结构,您可以启动该进程,它将从 csv 创建表,然后终止该进程。然后,从表中删除所有内容并加载数据文件。这是一种丑陋的“黑客”,但它对我有用。

【讨论】:

【参考方案6】:

我对快速导出/导入向导的建议是使用MySQL for Excel

这是无痛且快速的,您无需解决您必须解决的所有错误和调整LOAD DATA INFILE

【讨论】:

以上是关于MySQL工作台表数据导入向导极慢的主要内容,如果未能解决你的问题,请参考以下文章

从 Azure SQL 导入 MySQL 工作台数据库

为啥 MySQL Workbench 表数据导入向导会导入 0 条记录?

在 MySQL Workbench 中,使用“表数据导入向导”导入 CSV 会创建空表

navicat导入excel到mysql中的导入向导问题

无法使用 phpmyadmin 向导将 csv 导入 mysql 数据库

mysql 表导入向导无法导入 csv 文件