gpt4 book ai didi

sql - 使用 dblink 无法在 2 个数据库之间更新

转载 作者:行者123 更新时间:2023-11-29 13:03:49 25 4
gpt4 key购买 nike

基本上我有 2 个数据库,每个数据库包含 2 个表。我需要使用数据库 1 中的表更新数据库 2 中的内容。

下面是数据库1表2(db1 ta2)

pid  |   pname  |  pcompany  |  clocation  |  did  |   name
1 Pirates Argos London 1 Mary

数据库2表1(db1 tb1)

pid  |   pname        |  pcompany  |
1 Ba Ba Black Argos

现在我需要将“Ba Ba Black”更新为 Pirates,这意味着我需要从 db1 ta2 更新 db2 tb1

UPDATE tb1 
SET name = ta1.name
WHERE ta1.name = (SELECT ta1.name FROM dblink('port=5432, dbname=db1 user=postgres password=12345',
'SELECT name FROM ta1'))
AS t1 (a integer, b character(20), c integer)
WHERE pid = 1;

但是我有这个错误:

ERROR:  syntax error at or near "AS"
LINE 5: AS t1 (a integer, b character(20), c integer)

知道我可能搞砸了什么吗?

最佳答案

添加表/列别名和(很可能)像这样的 WHERE 条件:

UPDATE tb1 b
SET name = a.pname -- maybe you want to update *pname* instead?
FROM (
SELECT *
FROM dblink('port=5432 dbname=db1 user=postgres password=12345'
, 'SELECT pname FROM ta1 <b>WHERE pid = 1</b>')
<b>AS t(pname text)</b>
) a
WHERE b.pid = 1;

假设类型text。适应你的实际类型。
connection string 中没有逗号 .
我没有将 a 链接到 b,因为 a 在这里返回一行。

关于sql - 使用 dblink 无法在 2 个数据库之间更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20840261/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com