导出大的MySql表

我在MySql中有一个使用PhpMyAdminpipe理的表。 目前它坐在约96万行。

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

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

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

老实说,这个数据的大小,我会build议做一个mysqldump然后导入到另一个MySQL的另一个副本,也许在一个虚拟机专用于此任务的表复制。 从那里,你可以设置超时,如你想要的高,而不用担心资源限制炸毁你的生产数据库。 在基于Unix的操作系统上使用nice或在基于Windows的系统上使用进程优先级,您应该能够在不影响生产系统的情况下执行此操作。

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

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

还是他在Excel中build立function,而不是问他真正需要什么?

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

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

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

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