繁体   English   中英

MySQL workbench 表数据导出极慢

[英]MySQL workbench table data export extremely slow

我刚刚下载了最新版本的 MySQL Workbench (6.3.6),并尝试使用新的“表数据导出”向导将远程表(在 Google CloudSQL 上)导出到 csv。 该表有大约 600,000 行,最终下载的大小约为 75MB。 花了7.5个小时。

我意识到我可以使用 Google Developer Console 执行此导出(我这样做了,花了大约 15 秒),但 MySQL Workbench 似乎出了点问题。 会不会是配置问题导致速度如此之慢?

我知道这个问题已经很老了,但我正在回答,因为我最近遇到了这个问题。 我试图导出 200 万多行,但花了 2 天时间才完成一半。 这是在尝试了几种不同的出口方式之后。 然后发现了这个:

SELECT * 
FROM my_table
INTO OUTFILE 'C:/ProgramData/MySQL/MySQL Server 8.0/Uploads/my file.csv' 
FIELDS ENCLOSED BY '"' 
TERMINATED BY ';' 
ESCAPED BY '"' 
LINES TERMINATED BY '\r\n';

它在 80 秒内完成!

请注意:如果您遇到secure_file_priv问题,则将文件路径设置为等于以下结果:

SHOW VARIABLES LIKE "secure_file_priv"

说明:Workbench 通过 CSV 导出向导导出大型数据集时速度非常慢。 与较小的集合相比,速度慢得不成比例。 但是,这是我以前在使用 .NET 时遇到过的事情。

如何重复:得到一个15k左右记录或更多的表,并通过向导导出。 注意它需要多长时间,然后导出该数据的一个子集,看看所花费的时间如何与行数不线性相关。

建议的修复:在构建 CSV 导出应用程序时我注意到,MS .NET 框架不能很好地处理巨大的字符串,因此往往表现不佳。

我找到了解决方案。 在完成生成后构建巨大的字符串以转储到文件中,而不是构建 1 个巨大的字符串并在导出完成后立即将其写入文件,我只需要做一些就可以获得更好的性能一次生成一百行 CSV,将其写入文件并刷新您一直在将生成的数据写入其中的缓冲区。

我建议写入一个临时文件,然后在完成后将其重命名/移动到用户指定的文件。 写入临时文件然后移动/重命名是 Photoshop 和其他一些应用程序保存数据的方式。 我在开发自己时发现的写入 x 行和刷新比试图让 .NET 管理 20MB 的字符串快得多。

尝试使用 ETL 工具 Pental ETL

要么

https://www.mycli.net/

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM