我希望这是一个常见的问题。我有两台不同的电脑:
每台计算机都有自己运行的PostgreSQL数据库。两台计算机基本上具有相同的表名,在开发计算机中有几个表;但是在开发机器中更改了表定义和关系,以更好地处理参照完整性并符合3NF标准。
我需要将特定数据(即列)从远程服务器导入到开发计算机的特定表中(其中开发表具有与远程服务器不同的结构)。
这是如何在PostgreSQL中完成的? (我想只是从pgdump加载表会覆盖较新的开发表结构?)。
(伪代码)
的某些内容使用PostgreSQL 9.3:
insert into <local computer> charges (tposted, patient_recid, fileoninsurance)
select tposted, patient_recid, fileoninsurance
from <Remote Server> ( select e.tposted, e.patient_recid, d.fileoninsurance
from encountertimes e
join daysheets d on ( e.tposted = d.tposted and e.patient_recid =d.patient_recid).
为了清楚起见,需要使用远程服务器表而不是开发机器来完成表连接。
TIA
答案 0 :(得分:1)
您可以使用COPY仅转储所需的字段,并将其加载到另一个db:
中COPY (
SELECT e.tposted, e.patient_recid, d.fileoninsurance
FROM encountertimes e
JOIN daysheets d USING(tposted, patient_recid)
) TO '/some/file'; -- or STDOUT
...
COPY charges (tposted, patient_recid, fileoninsurance) FROM '/some/file';
或者,使用foreign data wrappers,这与你的伪数据非常相似。
您还可以使用pg_dump
转储表中的数据,作为具有命名列的INSERT,因此表结构不必完全匹配(只要目标表是超集)出口的那个)。