Postgresql 将表数据从一个数据库复制到另一个数据库

Postgresql 将表数据从一个数据库复制到另一个数据库,postgresql,Postgresql,我在同一台服务器上有两个数据库,需要将数据从第一个数据库中的表复制到第二个数据库中的表。有几点需要注意: 两个表都已存在(即:我不能先删除“复制到”表。我只需将数据添加到现有表中) 列名不同。因此,我需要精确地指定要复制的列,以及它们在新表中的名称 经过一番挖掘,我只能找到: pg_dump -t tablename dbname | psql otherdbname 但是上面的命令没有考虑我列出的两个注意事项。我会使用ETL工具来实现这一点。有免费的工具可用,它们可以帮助您更改列名,它

我在同一台服务器上有两个数据库,需要将数据从第一个数据库中的表复制到第二个数据库中的表。有几点需要注意:

  • 两个表都已存在(即:我不能先删除“复制到”表。我只需将数据添加到现有表中)
  • 列名不同。因此,我需要精确地指定要复制的列,以及它们在新表中的名称
经过一番挖掘,我只能找到:

pg_dump -t tablename dbname | psql otherdbname 

但是上面的命令没有考虑我列出的两个注意事项。

我会使用ETL工具来实现这一点。有免费的工具可用,它们可以帮助您更改列名,它们被广泛使用和测试。大多数工具允许外部调度器(如windows任务调度器或cron)根据您需要的任何时间计划运行转换


我个人在过去也曾做过类似的工作,它一直对我很有效。根据您的要求,我将创建一个转换,首先从源数据库加载表数据,在“选择值”步骤中修改列名,然后使用“truncate”选项将值插入到目标表中,以从目标表中删除现有行。如果您的表太大,每次都无法重新填充,则需要制定增量加载过程

对于表
t
,在源数据库中有列
a
b
,在目标数据库中有列
x
y

psql -d sourcedb -c "copy t(a,b) to stdout" | psql -d targetdb -c "copy t(x,y) from stdin"

使用外部数据包装器