我想使用python将数据从一个oracle数据库迁移到另一个oracle数据库
# first database connection
con1 = cx_Oracle.connect(username, password, host/service)
cursor1 = con1.cursor()
# second database connection
con2 = cx_Oracle.connect(username, password, host/service)
cursor2 = con1.cursor()
sql = "insert into db2.table select * from db2.table"
1条答案
按热度按时间xqkwcwgp1#
有两种方法。
1.数据库链接
你想
您不需要一对游标和一对打开的DB连接来完成这一任务。一个到db2的连接就足够了。您 * 需要 * 的是一个DB link,以便db2查询能够访问db 1表。语法为:
因此,如果您将其命名为
link_db1
,您将使用当客户机向db2发送命令后,客户机就不存在了。可能有一百万个结果行,它们都直接从db 1服务器流向db2服务器。客户机不接触任何一行。如果客户机的网络带宽很低,也不会影响复制大量行数据的吞吐量。
https://docs.oracle.com/cd/E18283_01/server.112/e17120/ds_concepts002.htm
How to create a DB link between two oracle instances
2.内存中复制
如果需要,您 * 可以 * 创建一对连接,每个数据库一个连接。
从一个连接下载行,并通过另一个连接插入它们。
如果客户机有足够的内存,您可以在一个批处理中执行此操作,或者您可能更喜欢一次执行几千行的批处理。(不要一次执行一行,因为这将是延迟主导的--吞吐量将低得令人失望。)客户机可用的网络带宽将在复制行的速度方面发挥重要作用。
read_sql/to_sql函数提供了 * 一种 * 完成复制的方法。
这是一个不太吸引人的选项。如果可行,最好使用DB链接。