我在MySql中有一个使用PhpMyAdmin管理的表。目前它位于约960,000行。
我有一位老板喜欢在Excel中查看数据,这意味着每周,我必须将数据导出到Excel中。
我正在寻找一种更有效的方法来做到这一点。因为我实际上不能一次完成整个表格,因为它超时了。因此,我一直坚持将表“分块”为较小的查询并将其导出为这样。
我尝试将Excel(和Access)直接连接到我的数据库,但同样的问题;它超时了。有没有办法扩展连接限制?
答案 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 OUTFILE
或mysqldump
将您的表格导出为CSV,然后Excel可以直接打开。