【发布时间】:2012-05-04 13:07:39
【问题描述】:
我正在尝试在 MySQL Workbench 中保存大约 1,000,000 条记录的查询结果。
当我运行 SELECT 时,只显示 1000 条记录(MySQL Workbench 的默认限制)。我知道我可以更改限制或删除限制,但我不希望将 1,000,000 条记录加载到结果面板中(这可能会使我的计算机崩溃?),但我确实想将结果保存到文件中。
MySQL Workbench 是否允许您将查询结果直接保存到文件中?还是保存整个结果集而不是 1,000 个?
【问题讨论】:
-
我还可以编写一个 PHP 脚本来执行查询并输出到 CSV,但这也可能使我的服务器崩溃,对吧?如果你fopen()来追加,大文件会不会有问题?
-
我不熟悉工作台,但是您可以编写一个脚本来一次只获取 1000 条记录,只需每次正确设置偏移量(即第一次
LIMIT 0,1000,第二次LIMIT 1000,1000,然后LIMIT 2000,1000,等等...),每次都将结果附加到文件中。无需将整百万条记录保存在内存中,也无需尝试将它们一次全部写入文件。 -
另一个复杂的问题是查询本身必须引用其他记录。它执行 SUM() 并在允许记录进入结果集中之前使用 HAVING 检查 SUM。所以我确实需要先处理整个数据集,然后输出。
-
您可以像现在一样处理整个数据集,并且仍然应用 LIMIT 来获取和输出结果。 LIMIT 不会以任何方式影响结果,它只是限制返回给您的结果集。
-
如果您创建一个包含选择结果的表,那么您可以使用任何标准工具或命令将结果传输到文件——甚至是您客户端上的文件工作站。有关详细信息,请参阅下面的答案。 [抱歉,我尽量不宣传自己的答案,但现有答案中缺少这种开箱即用的想法。]
标签: mysql mysql-workbench