在PostgreSQL

时间:2017-12-24 11:44:29

标签: python database postgresql amazon-web-services

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

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

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

1 个答案:

答案 0 :(得分:1)

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

  

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

postgres docs上提供的详细信息,但具体在您设置之后,您可以:

  

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

     

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

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