查询结果过大怎么办
What to do if a query result is too big
我正在使用 python3 的 mysql 连接器从 mysql 数据库进行查询。我的数据太多,如果我收集最近 7 天的数据,查询的大小将超过 10GB,因此迫使我的 python 脚本被终止。我认为通常我们可以流式传输结果,但是我找不到在 mysql conncetor 中流式传输查询结果的方法。还有其他方法可以解决这个问题吗?
不要一次性获取结果集。您可以执行以下操作之一或这些操作的组合:
- 使用
LIMIT, OFFSET
生成多个文件使用SELECT into
- 使用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
中附带了一个示例
我正在使用 python3 的 mysql 连接器从 mysql 数据库进行查询。我的数据太多,如果我收集最近 7 天的数据,查询的大小将超过 10GB,因此迫使我的 python 脚本被终止。我认为通常我们可以流式传输结果,但是我找不到在 mysql conncetor 中流式传输查询结果的方法。还有其他方法可以解决这个问题吗?
不要一次性获取结果集。您可以执行以下操作之一或这些操作的组合:
- 使用
LIMIT, OFFSET
生成多个文件使用SELECT into
- 使用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