Python Postgres 将数据从一个数据库的 table 插入到另一个数据库的另一个 table 的最佳方法
Python Postgres Best way to insert data from table on one DB to another table on another DB
我有以下 python 代码,用于复制 postgres DB1 上 table 的内容并插入到 postgres DB2 上的类似 table 中。
我想通过使用 BULK INSERTS 来加快速度。我如何实现这个
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(外部数据包装器)连接两个服务器 (https://www.postgresql.org/docs/9.5/static/postgres-fdw.html)。并在一台服务器上由 table 操作。
第二种方法是使用 dblink (https://www.postgresql.org/docs/9.6/static/dblink.html)。
通过这两种方式,数据直接从一台服务器传递到另一台服务器(不通过您的程序)
我有以下 python 代码,用于复制 postgres DB1 上 table 的内容并插入到 postgres DB2 上的类似 table 中。
我想通过使用 BULK INSERTS 来加快速度。我如何实现这个
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(外部数据包装器)连接两个服务器 (https://www.postgresql.org/docs/9.5/static/postgres-fdw.html)。并在一台服务器上由 table 操作。
第二种方法是使用 dblink (https://www.postgresql.org/docs/9.6/static/dblink.html)。
通过这两种方式,数据直接从一台服务器传递到另一台服务器(不通过您的程序)