我需要加入所有Postgresql表并将它们转换为
Python字典.数据库中有72个表.列总数大于1600.
我编写了一个简单的Python脚本,它连接了几个表但由于the memory error而无法加入所有表.在脚本执行期间所有内存都被占用.我在一个具有128GB RAM和8个cpu的新虚拟服务器上运行该脚本.它在lambda函数执行期间失败.
如何改进以下代码来执行所有表连接?
from sqlalchemy import create_engine import pandas as pd auth = 'user:pass' engine = create_engine('postgresql://' + auth + '@host.com:5432/db') sql_tables = ['table0','table1','table3',...,'table72'] df_arr = [] [df_arr.append(pd.read_sql_query('select * from "' + table + '"',con=engine)) for table in sql_tables] df_join = reduce(lambda left,right: pd.merge(left,right,how='outer',on=['USER_ID']),df_arr) raw_dict = pd.DataFrame.to_dict(df_join.where((pd.notnull(df_join)),'no_data')) print(df_join) print(raw_dict) print(len(df_arr))
最终目标是将denormalize DB数据作为文档索引到Elasticsearch,每个用户一个文档.
解决方法
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。