导出大型 MySql 表

Posted

技术标签:

【中文标题】导出大型 MySql 表【英文标题】:Exporting Large MySql Table 【发布时间】:2012-06-05 00:33:11 【问题描述】:

我在 mysql 中有一个使用 phpMyAdmin 管理的表。目前它大约有 960,000 行。

我有个老板喜欢在Excel里看数据,也就是说每周,我都要把数据导出到Excel中。

我正在寻找一种更有效的方法来做到这一点。因为我实际上不能一次完成整个表格,因为它超时了。所以我一直坚持将表“分块”成更小的查询并像这样导出它。

我尝试将 Excel(和 Access)直接连接到我的数据库,但同样的问题;它超时。有没有办法延长连接限制?

【问题讨论】:

【参考方案1】:

你的老板是雨人吗?他只是在原始“数据”中发现“信息”吗?

或者他是在 excel 中构建函数而不是询问他真正需要什么?

和他一起坐一个小时,看看他实际上在用数据做什么。被问到什么问题? (手动)检测到哪些模式?编写一个真正的工具来查找该信息,然后将其插入您的监控/警报系统。

或者,换个新老板。 说真的。你可以告诉他我是这么说的。

【讨论】:

我不会投票赞成这个答案,但这实际上是一个很好的答案。很好的横向思维!【参考方案2】:

老实说,对于这种大小的数据,我建议做一个 mysqldump 然后将表导入到另一个安装在其他地方的 MySQL 副本中,也许在专用于该任务的虚拟机上。从那里,您可以设置超时等任意高的时间,而不必担心资源限制会破坏您的生产数据库。在基于 Unix 的操作系统上使用 nice 或在基于 Windows 的系统上使用进程优先级,您应该能够做到这一点,而不会对生产系统产生太大影响。

或者,您可以set up a replica 您的生产数据库并从那里提取数据。拥有一个从生产系统复制各种表甚至整个数据库的所谓“报告数据库”实际上是大型环境中相当普遍的做法,以确保您不会意外杀死生产数据库为某人提取数字。作为一个额外的优势,您不必等待 mysqldump 备份完成才能开始为您的老板提取数据;你可以马上做。

【讨论】:

【参考方案3】:

行数不会太多。运行查询以将数据导出到 csv 文件中:

SELECT column,column2 INTO OUTFILE '/path/to/file/result.txt'
  FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"'
  LINES TERMINATED BY '\n'
  FROM yourtable WHERE columnx = 'çondition';

【讨论】:

【参考方案4】:

一种选择是使用SELECT ... INTO OUTFILEmysqldump 将表格导出为CSV,然后Excel 可以直接打开。

【讨论】:

以上是关于导出大型 MySql 表的主要内容,如果未能解决你的问题,请参考以下文章

如何导出大型MySQL表

导出大型数据库 mysql phpmyadmin

mysql数据导入导出

使用 PHP/MySQL 导出大型 CSV 数据的最佳方法是啥?

使用javascript将大型html表导出到excel

如何导出大型数据集(大约 40k 行和 26 列),以写入 Excel 表