我在同一台服务器上有两个数据库,需要将数据从第一个数据库中的表复制到第二个数据库中的表。一些警告:
经过一番挖掘后,我才能找到这个:
pg_dump -t tablename dbname | psql otherdbname
但上述命令没有考虑我列出的两个警告。
答案 0 :(得分:2)
对于表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"
答案 1 :(得分:0)
我为此使用了ETL工具。有免费的工具,它们可以帮助您更改列名称,它们被广泛使用和测试。大多数工具允许外部调度程序(如Windows任务调度程序或cron)根据您需要的时间表运行转换。
我个人过去曾使用Pentaho PDI来完成类似的任务,而且我一直都很好。根据您的要求,我创建一个转换,首先从源数据库加载表数据,修改"选择值" -step中的列名,然后使用值将值插入目标表中"截断"用于从目标表中删除现有行的选项。如果您的桌子太大而无法每次重新填充,您需要确定一个增量加载程序。