我在查询MS SQL Server数据库中超过500万条记录的表时遇到问题。我想选择所有的记录,但是在内存中选择太多数据时,我的代码似乎失败了。
这是可行的:
import pandas.io.sql as psql
sql = "SELECT TOP 1000000 * FROM MyTable"
data = psql.read_frame(sql, cnxn)
...but这不起作用:
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
我在here上读到,从csv文件创建dataframe
时也存在类似的问题,解决方法是使用'iterator‘和'chunksize’参数,如下所示:
read_csv('exp4326.csv', iterator=True, chunksize=1000)
对于SQL数据库的查询,有没有类似的解决方案?如果不是,首选的解决方法是什么?我是否应该使用其他方法来读取块中的记录?我读过一些关于在pandas中处理大型数据集的讨论here,但执行SELECT *查询似乎有很多工作要做。当然还有一种更简单的方法。
https://stackoverflow.com/questions/18107953
复制相似问题