导出大型MySql表

时间:2012-06-05 00:33:11

标签: mysql sql excel ms-access

我在MySql中有一个使用PhpMyAdmin管理的表。目前它位于约960,000行。

我有一位老板喜欢在Excel中查看数据,这意味着每周,我必须将数据导出到Excel中。

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

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

4 个答案:

答案 0 :(得分:10)

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

或者他是否在excel中构建函数而不是询问他真正需要的东西?

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

或者,找一个新老板。 严重。你可以告诉他我是这么说的。

答案 1 :(得分:3)

老实说,对于这个大小的数据,我建议做一个mysqldump,然后将表导回到安装在其他地方的另一个MySQL副本,也许是在专用于此任务的虚拟机上。从那里,您可以根据需要设置超时和高,而不用担心资源限制会炸毁您的生产数据库。在基于Unix的操作系统上使用nice或在基于Windows的系统上处理优先级,您应该能够在不对生产系统产生太大影响的情况下执行此操作。

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

答案 2 :(得分:1)

行不是太多。运行查询以将数据导出到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';

答案 3 :(得分:0)

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