我正在尝试从fixedwidth文件创建一个datafrmae并将其加载到postgresql数据库中。我的输入文件非常大(~16GB)和2千万条记录。因此,如果我创建数据帧,它将消耗大部分可用的RAM。这需要很长时间才能完成。所以我考虑使用chunksize(使用python生成器)选项并将记录提交到表中。但由于'AttributeError: 'generator' object has no attribute 'to_sql'
错误而失败。在
受到这个答案的启发https://stackoverflow.com/a/47257676/2799214
输入文件:测试_文件.txt
XOXOXOXOXOXO9
AOAOAOAOAOAO8
BOBOBOBOBOBO7
COCOCOCOCOCO6
DODODODODODO5
EOEOEOEOEOEO4
FOFOFOFOFOFO3
GOGOGOGOGOGO2
HOHOHOHOHOHO1
样品.py
^{pr2}$错误:
chunk.to_sql('sample_table', engine, if_exists='replace', schema='sample_schema', index=False)
AttributeError: 'generator' object has no attribute 'to_sql'
我的主要目标是提高绩效。请帮助我解决这个问题,或者建议更好的方法。提前谢谢。在
我建议你这样做:
“chunck_generator”将返回“generator”对象,而不是块的实际元素。您需要迭代对象以从中获取块。在
因此,要修复代码,只需在生成器上循环一次即可
^{pr2}$但似乎很激动。我可以这么做:
结论: to\u sql方法在加载大文件时效率不高。所以我在psycopg2包中使用copy_from方法,并在创建数据帧时使用chunksize选项。 在30分钟内加载980万条记录(约17GB),每个记录有98列。在
我已经删除了我实际文件的原始引用(iam使用原始文章中的示例文件)。在
相关问题 更多 >
编程相关推荐