使用 dblink 更新列

Sam*_*la 3 postgresql inner-join

我使用下面的参考来更新表 cust_eq_memory_dy 中的 2 列(客户名称、服务)。

表 msrouterlistfinal2 处的环回将匹配 cust_eq_memory_dy 处的地址。

当我在“FROM”处或附近遇到语法错误时,有人可以帮助我吗?

使用 dblink 在 2 个数据库之间更新不起作用

UPDATE cust_eq_memory_dy B 
SET customername = A.customername 
WHERE B.ipaddress = A.loopbackip 
FROM ( 
  SELECT *
  FROM DBLINK ( 'host= 10.X.80.160 user=123 password=123 dbname=postgres',
'select customername, serviceid, loopbackip FROM msrouterlistfinal2 ')
 as temp (
 customername character varying (100),
 serviceid character varying (50),
 loopbackip character varying (30) )
 )A
Run Code Online (Sandbox Code Playgroud)

Osc*_*rce 5

如果您使用 postgres,我强烈建议您使用WITH语句。

    WITH A as ( SELECT * FROM DBLINK ( 'host= 10.X.80.160 user=123 password=123 dbname=postgres', 'select customername, serviceid, loopbackip FROM msrouterlistfinal2 ') as temp ( customername character varying (100), serviceid character varying (50), loopbackip character varying (30) ) )
UPDATE cust_eq_memory_dy B SET customername = (SELECT A.customername FROM A WHERE B.ipaddress = A.loopbackip);
Run Code Online (Sandbox Code Playgroud)

检查此链接以获取更多信息。 https://www.postgresql.org/docs/8.4/static/queries-with.html