Postgresql Python Postgre是将数据从一个DB上的表插入另一个DB上的另一个表的最佳方法

Postgresql Python Postgre是将数据从一个DB上的表插入另一个DB上的另一个表的最佳方法,postgresql,python-3.x,plpgsql,bulkinsert,sqlbulkcopy,Postgresql,Python 3.x,Plpgsql,Bulkinsert,Sqlbulkcopy,我有以下python代码,它复制postgres DB1上表的内容,并插入到postgres DB2上类似的表中 我想通过使用批量插入来加快速度。我如何做到这一点 import psycopg2 import sys import os all_data = [] try: connec = psycopg2.connect("host = server1 dbname = DB1 ") connecc = psycopg2.connect("host = server2

我有以下python代码,它复制postgres DB1上表的内容,并插入到postgres DB2上类似的表中

我想通过使用批量插入来加快速度。我如何做到这一点

import psycopg2
import sys
import os


all_data = []


try:
    connec = psycopg2.connect("host = server1 dbname = DB1 ")
    connecc = psycopg2.connect("host = server2 dbname = DB2 ")
    connec.autocommit = True
    connecc.autocommit = True
except:
    print("I am unable to connect to the database.")


cur = connec.cursor()

curr = connecc.cursor()



cur.execute("""SELECT * FROM TABLE1""")


curr.execute("TRUNCATE table TABLE2")

rows = cur.fetchall()

for row in rows:
    all_data = row


    curr.execute("INSERT INTO TABLE2 "
                 "VALUES(%s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s,     %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s,"
             " %s)"
    ,(all_data[0],  all_data[1],all_data[2],all_data[3],all_data[4],     all_data[5], all_data[6], all_data[7],
      all_data[8], all_data[9], all_data[10], all_data[11],     all_data[12], all_data[13], all_data[14],all_data[15],
      all_data[16], all_data[17], all_data[18], all_data[19],
      all_data[20], all_data[21], all_data[22]))

    connecc.commit()

connec.close()

connecc.close()

最简单的方法是使用FDW外部数据包装器连接两台服务器。并通过一台服务器中的两个表进行操作

第二种方法是使用dblink


通过这两种方式,数据通过您的程序直接从一台服务器传递到第二台服务器

Check DBLINK to the RESCUE FDW是最新的方式,但需要更多操作。但允许以本地方式查询外部表。不止一个外来表可能不仅是postgresql,还有oracle、mysql,甚至只是csv文件:-