首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >从PostgreSQL中选择大型数据集时出现内存错误

从PostgreSQL中选择大型数据集时出现内存错误
EN

Stack Overflow用户
提问于 2017-05-12 12:30:36
回答 1查看 1K关注 0票数 0

所以我有一个表,有146列,大约。本地存储到Postgresql中的800万行稀疏数据。

我的目标是一次选择整个数据集,将其存储到pandas数据帧中并执行一些计算。

到目前为止,我已经在许多线程中阅读了关于服务器端游标的文章,但我猜我做错了什么,因为我没有看到内存的改善。文档也是相当有限的。

到目前为止我的代码如下:

代码语言:javascript
运行
复制
cur=conn.cursor('testCursor')
cur.itersize = 100000
cur.execute("select * from events")

df = cur.fetchall()

df = pd.DataFrame(df)
conn.commit()
conn.close()

我还尝试使用fetchmany()或fetchone()代替fetchall(),但我不知道如何滚动结果。我想我可以在fetchone()中使用类似的东西,但我不知道如何处理fetchmany():

代码语言:javascript
运行
复制
df = cur.fetchone()
while row:
   row = cur.fetchone() 

最后,在使用fetchone()和fetchmany()的情况下,如何在不消耗所有内存的情况下将结果连接到单个数据帧中?仅需注意,我有16 to的可用RAM

EN

回答 1

Stack Overflow用户

发布于 2017-05-12 12:50:02

8mil行x 146列(假设一列至少存储一个字节)将提供至少1 GB。考虑到您的列可能每列存储超过一个字节,即使您尝试做的第一步会成功,您也会遇到RAM约束(例如,最终结果不适合RAM)。

处理大型数据集的常用策略是以小批量处理它们,然后(如果需要)合并结果。例如,让我们来看看PySpark。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43929325

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档