在PostgreSQL中逐步获取源表(在db1中)到目标表(在db2中)的所有数据

问题描述 投票:0回答:1

我在AWS服务器端点中有两个PostgreSQL数据库db1 =源数据库和db2 =目标数据库。对于db1,我只具有读权限,对于db2,我有读写权限。作为生产数据库的db1有一个名为'public.purchases'的表,我的任务是将db1中'public.purchases'表中的所有数据递增到db2中的'新创建表'(让我将表调用为'public.purchases_copy')。每次我运行脚本来执行此操作时,db2中的“public.purchases_copy”目标表都需要在不完全重新加载表的情况下进行更新。

我的问题是什么是更有效地完成这项任务的最佳方式。我在网上做了很多研究,我发现可以通过使用'psycopg2'模块将Python连接到PostgreSQL来实现。我不是那么精通Python,如果有人帮我指出StackOverflow中链接类似问题的链接,或者指导我做什么或者如何实现或任何特定的教程,那将是非常有帮助的。哪个我可以参考?提前致谢。

PostgreSQL版本:9.5,PostgreSQL GUI使用:pgadmin 3,安装Python版本:3.5

python database postgresql amazon-web-services
1个回答
1
投票

虽然可以使用python执行此操作,但我建议您首先查看Postgres自己的模块postgres_fdw,如果您可以使用它:

postgres_fdw模块提供外部数据包装器postgres_fdw,可用于访问存储在外部PostgreSQL服务器中的数据。

有关postgres docs的详细信息,但特别是在您设置之后,您可以:

对于要访问的每个远程表,使用CREATE FOREIGN TABLE或IMPORT FOREIGN SCHEMA创建外部表。外表的列必须与引用的远程表匹配。但是,如果指定正确的远程名称作为外部表对象的选项,则可以使用与远程表不同的表和/或列名。

现在,您只需要从外表中选择SELECT即可访问存储在其基础远程表中的数据

为了简化设置,最好使用readonly db作为外部数据库。

© www.soinside.com 2019 - 2024. All rights reserved.