我有2个不同的数据库,我需要复制一个数据库之间的数据到另一个。我使用以下代码:
with psycopg.connect(dsn_src) as conn1, \
psycopg.connect(dsn_tgt) as conn2:
with conn1.cursor().copy("COPY " + table + " TO STDOUT (FORMAT BINARY)") as copy1:
with conn2.cursor().copy("COPY " + table + " FROM STDIN (FORMAT BINARY)") as copy2:
for data in copy1:
copy2.write(data)
问题是,我复制了大约10M+行,而且似乎循环永远都要进行。有什么方法可以提高性能吗?
1条答案
按热度按时间rdrgkggo1#
1.通过管道
pg_dump
到psql
,使用PostgreSQL本地格式复制表。1.首先是高压缩的多线程
pg_dump
,然后是多线程pg_restore
:1.使用
postgres_fdw
将其作为外部表链接,使其可访问,而不必在目标上第二次物理写入。与
dblink
类似。1.设置replication以连续传输数据。
1.尝试其他
psycopg
插入方法。