如何使用postgres dblink对另一个数据库中的表进行更新?

时间:2016-11-18 10:17:12

标签: sql postgresql dblink postgres-fdw

必须执行的查询简单如下 -

Update employee set is_done=true; 

我想要更新的表只出现在另一个数据库中。

我一直在使用这些类型的dblink查询。

INSERT Into mytable select * from 
dblink('host=10.1.1.1
 user=user
 password=password
 dbname=oat', 'SELECT * from employee') tt(
     user_id integer,
     is_done boolean

 ) on conflict(user_id) do nothing;

如何更新另一个数据库上的员工表字段?

我也想知道我们是否也能以类似的方式实现删除 - 删除给定id的整行

另外,如果我必须在更新查询中与当前数据库表进行连接,该怎么办?

2 个答案:

答案 0 :(得分:1)

SELECT dblink_connect('host=10.1.1.1
 user=user
 password=password
 dbname=oat');

SELECT dblink_exec('Update employee set is_done=true');

我建议你也使用FDW,特别是如果你在9.6

<强>更新

for dblink you&#34; wrap&#34; qry并发送它。这是加入&#34;的唯一途径。包装查询是DO块中的动态SQL。哪个会很难看。创建FOREIGN TABLE的Concider - 它将允许您轻松地从本地表更新

更新两个

https://www.postgresql.org/docs/current/static/sql-createserver.html https://www.postgresql.org/docs/current/static/sql-createusermapping.html https://www.postgresql.org/docs/current/static/sql-createforeigntable.html

所以你创建服务器,映射用户并创建一个外表。

完成更新后,就好像是本地的

答案 1 :(得分:0)

这对我有用。

0