关于postgresql:将表数据从一个数据库复制到另一个数据库

Copy table data from one database to another

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

  • 两个表都已存在(即:我不能先删除'copy-to'表。我只需要将数据添加到现有表中)
  • 列名称不同。 所以我需要准确指定要复制的列,以及它们在新表中的名称

经过一番挖掘,我才能找到这个:

1
pg_dump -t tablename dbname | psql otherdbname

但上述命令没有考虑我列出的两个警告。


对于表t,源数据库中的列ab以及目标中的xy

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

我会使用ETL工具。 有免费的工具,它们可以帮助您更改列名称,它们被广泛使用和测试。 大多数工具允许外部调度程序(如Windows任务调度程序或cron)根据您需要的时间表运行转换。

我个人过去曾使用Pentaho PDI执行类似的任务,它一直很适合我。 根据您的要求,我创建一个转换,首先从源数据库加载表数据,修改"选择值"步骤中的列名称,然后使用"truncate"选项将值插入目标表中 目标表中的现有行。 如果您的表太大而无法每次重新填充,则需要确定增量加载过程。