我正在使用pandas查询不同的数据库(通常是oracle)并存储在一个postgres数据库中。在某些情况下,我只是查询结果来创建一个表,而不使用任何熊猫的力量。对于大型查询,由于pandas在运行插入之前检索所有行,因此它占用大量内存。
我很想知道我是否可以单独使用SQLalchemy表达式来完成某些事情。
我的熊猫代码示例(非常简单)
import pandas as pd
from sqlalchemy import create_engine
engineOra = create_engine('oracle://user:passwd@oraclehost:port/sid')
engine = create_engine('postgresql://user:passwd@localhost:5432/dbname')
data = pd.read_sql_query(sqlSelect, engineOra)
data.to_sql('table_name',engine, if_exists='replace')
除非是非常大的结果集,否则它的效果很好。我开始研究直接SQLAlchemy表达式(理想情况下内存使用率低)的方法,但没有运气。
engineOra = create_engine('oracle://user:passwd@oraclehost:port/sid')
engine = create_engine('postgresql://user:passwd@localhost:5432/dbname')
results = (engineOra.connect().execution_options(stream_results=True).execute(sqlSelect))
然后我尝试了各种方法来查找结果中的列/类型的信息,并用于创建表,然后从结果中插入 - 但不是运气。可能通过SQLalchemy工作吗?