sql - 从 oracle sql 中检索大表到 pandas 的有效方法
问题描述
我在 oracle sql 中有一个包含 20 亿行的表,我要将这些数据加载到 pandas 数据框中。我有足够的内存空间(~64GB)并使用英特尔傲腾作为交换空间内存问题。我面临的问题是加载数据需要很长时间。
目前,我正在使用以下查询。
query = """select /*+parallel(35)*/ * from twistdw"""
df = pd.read_sql(query, conn)
该脚本需要永远运行。
我也试过
chunk_size = 5000000
offset = 0
dfs=[]
while True:
query = """select /*+parallel(35)*/ * from twistdw;"""
dfs.append(psql.read_sql(query, conn_twist, chunksize=chunk_size))
offset += chunk_size
if len(dfs[-1]) < chunk_size:
break
full_df = pd.concat(dfs)
上面的查询抛出一个错误:
Traceback (most recent call last):
File "<ipython-input-13-c133ce6f47b0>", line 14, in <module>
if len(dfs[-1]) < chunk_size:
TypeError: object of type 'generator' has no len()
我能得到一些帮助吗?
解决方案
推荐阅读
- pyspark - Pyspark 中的模型概率校准
- reactjs - 如何使用模块为作为表达式的类设置样式
- php - 从产品 WooCommerce 运输类别 ID 中获取标签名称
- python - NoReverseMatch at / Reverse for 'user_login' 未找到。'user_login' 不是有效的视图函数或模式名称
- android - Firebase Analytics 事件属性未显示,但确实出现在 DebugView 中
- android - 我在所有活动和mainfest中的“this.something”中出现错误,android studio的xml
- python - Discord.py 如何测试成员是否在角色字典中具有特定角色?
- amazon-web-services - 使用 docker-compose 在本地挂载 AWS EFS
- python - 制作一个新的 pandas 数据框,其中包含时间序列中每个 id 的值的列
- c# - 使用 c# 合并/连接两个视频