如何从Python中不同数据库的查询结果在一个数据库中创建表

如何从Python中不同数据库的查询结果在一个数据库中创建表,python,postgresql,sqlalchemy,psycopg2,cx-oracle,Python,Postgresql,Sqlalchemy,Psycopg2,Cx Oracle,我正在使用两个独立的数据库(Oracle和PostgreSQL),其中Oracle中有大量的参考数据,在分析Postgres中存储的数据时,我经常需要参考这些数据(我无法控制这部分)。我希望能够直接将查询结果从Oracle传输到Postgres中的表中(反之亦然)。我得到的最接近的代码类似于下面使用熊猫作为中间人的代码,但速度相当慢 import pandas as pd import psycopg2 import cx_Oracle import sqlalchemy # CONNECT

我正在使用两个独立的数据库(Oracle和PostgreSQL),其中Oracle中有大量的参考数据,在分析Postgres中存储的数据时,我经常需要参考这些数据(我无法控制这部分)。我希望能够直接将查询结果从Oracle传输到Postgres中的表中(反之亦然)。我得到的最接近的代码类似于下面使用熊猫作为中间人的代码,但速度相当慢

import pandas as pd
import psycopg2
import cx_Oracle
import sqlalchemy

# CONNECT TO POSTGRES
db__PG = psycopg2.connect(dbname="username", user="password")
eng_PG = sqlalchemy.create_engine('postgresql://username:password@localhost:5432/db_one')

# CONNECT TO ORACLE
db__OR = cx_Oracle.connect('username', 'password', 'SID_Name')
eng_OR = sqlalchemy.create_engine('oracle+cx_oracle://username:password@10.1.2.3:4422/db_two')

#DEFINE QUERIES
query_A = "SELECT * FROM tbl_A"
query_B = "SELECT * FROM tbl_B"

# CREATE PANDAS DATAFRAMES FROM QUERY RESULTS
df_A = pd.read_sql_query(query_A, db__OR)
df_B = pd.read_sql_query(query_B, db__PG)

# CREATE TABLES FROM PANDAS DATAFRAMES
df_A.to_sql(name='tbl_a', con=eng_PG, if_exists='replace', index=False)
df_B.to_sql(name='tbl_b', con=eng_OR, if_exists='replace', index=False)
我认为必须有一种更高效、更直接的方法来实现这一点(比如Oracle中跨不同数据库移动数据的数据库链接),但我对Python相当陌生,以前通常直接在SQL或SAS中工作。我一直在寻找直接从python游标结果或SQLAlchemy ResultProxy创建表的方法,但运气不太好


建议?

您看过Postgresql吗?它包括一个针对Oracle的数据库包装器。这样,您就可以简单地在Postgresql中将Oracle表表示为外部表。无需手动传输!这当然需要Postgresql数据库可以连接到Oracle数据库。是的,这是个好主意,我在发布这个问题后不久在其他地方也遇到了同样的想法,并且一直在研究。此时,我在编译oracle fdw时遇到了问题,但我仍然处于相当早期的过程中。如果我能让它发挥作用,我认为它可能符合要求,尽管我仍然有点惊讶,我没有找到更好的方法来使用Python或SQLAlchemy。如果在Python中向Postgresql转储内容,psycopg2和。我不想让熊猫做中间人,我一定会调查的。谢谢