查询结果过大怎么办

What to do if a query result is too big

我正在使用 python3 的 mysql 连接器从 mysql 数据库进行查询。我的数据太多,如果我收集最近 7 天的数据,查询的大小将超过 10GB,因此迫使我的 python 脚本被终止。我认为通常我们可以流式传输结果,但是我找不到在 mysql conncetor 中流式传输查询结果的方法。还有其他方法可以解决这个问题吗?

不要一次性获取结果集。您可以执行以下操作之一或这些操作的组合:

  1. 使用LIMIT, OFFSET生成多个文件使用SELECT into
  2. 使用Date/Hour函数生成多个文件使用SELECT into

cat 使用 cat hugedata_* > hugedata.csv

将所有生成的文件合并为一个文件

@Anthony Kong 的评论是正确的。为了解决这个问题,我们可以从 https://dev.mysql.com/doc/connector-python/en/connector-python-api-mysqlcursor-fetchmany.html

中执行 fetchmany 函数

稍微研究一下代码后,我发现fetchmany函数调用了很多fetchone来实现"fetchmany"。所以我最后决定使用fetchone。此外,fetchone 在文档 https://dev.mysql.com/doc/connector-python/en/connector-python-api-mysqlcursor-fetchone.html

中附带了一个示例