最佳答案
从 MS SQL Server 数据库中查询超过500万条记录的表存在问题。我想选择所有的记录,但我的代码似乎失败时,选择到内存中的数据太多。
这种方法是有效的:
import pandas.io.sql as psql
sql = "SELECT TOP 1000000 * FROM MyTable"
data = psql.read_frame(sql, cnxn)
但是这个不管用:
sql = "SELECT TOP 2000000 * FROM MyTable"
data = psql.read_frame(sql, cnxn)
它返回这个错误:
File "inference.pyx", line 931, in pandas.lib.to_object_array_tuples
(pandas\lib.c:42733) Memory Error
我读过 给你,在从 csv 文件创建 dataframe
时也存在类似的问题,解决方法是使用‘ iterator’和‘ chunksize’参数,如下所示:
read_csv('exp4326.csv', iterator=True, chunksize=1000)
对于从 SQL 数据库进行查询,是否有类似的解决方案?如果没有,首选的解决办法是什么?我是否应该使用其他方法来读取成块的记录?我读过一些关于在熊猫中使用大型数据集的 给你讨论,但是执行 SELECT * 查询似乎需要做很多工作。肯定有更简单的方法。