我无法从MS SQL Server数据库查询大于500万条记录的表.我希望能够选择所有记录,但在选择大量数据到内存时,我的代码似乎失败了.
这有效:
import pandas.io.sql as psql
sql = "SELECT TOP 1000000 * FROM MyTable"
data = psql.read_frame(sql, cnxn)
Run Code Online (Sandbox Code Playgroud)
...但这不起作用:
sql = "SELECT TOP 2000000 * FROM MyTable"
data = psql.read_frame(sql, cnxn)
Run Code Online (Sandbox Code Playgroud)
它返回此错误:
File "inference.pyx", line 931, in pandas.lib.to_object_array_tuples
(pandas\lib.c:42733) Memory Error
Run Code Online (Sandbox Code Playgroud)
我在这里读到,从csv文件创建数据帧时存在类似的问题,并且解决方法是使用'iterator'和'chunksize'参数,如下所示:
read_csv('exp4326.csv', iterator=True, chunksize=1000)
Run Code Online (Sandbox Code Playgroud)
是否有类似的SQL数据库查询解决方案?如果没有,首选的解决方法是什么?我是否需要通过其他方法读取块中的记录?我在这里阅读了一些关于在pandas中处理大型数据集的讨论,但执行SELECT*查询似乎需要做很多工作.当然有一种更简单的方法.