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

时间:2016-06-02 11:33:25

标签: postgresql

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

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

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

pg_dump -t tablename dbname | psql otherdbname 

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

2 个答案:

答案 0 :(得分:2)

对于表t,源数据库中包含ab列,目标中包含xy

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

答案 1 :(得分:0)

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

我个人过去曾使用Pentaho PDI来完成类似的任务,而且我一直都很好。根据您的要求,我创建一个转换,首先从源数据库加载表数据,修改"选择值" -step中的列名,然后使用值将值插入目标表中"截断"用于从目标表中删除现有行的选项。如果您的桌子太大而无法每次重新填充,您需要确定一个增量加载程序。