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工作台表数据导入向导极慢的主要内容,如果未能解决你的问题,请参考以下文章
为啥 MySQL Workbench 表数据导入向导会导入 0 条记录?
在 MySQL Workbench 中,使用“表数据导入向导”导入 CSV 会创建空表