gpt4 book ai didi

database - 我将如何使用 postgres_fdw 将插入查询制定到另一个数据库中?

转载 作者:搜寻专家 更新时间:2023-10-30 22:33:36 27 4
gpt4 key购买 nike

这是我要运行的查询 - 让我运行此查询的当前数据库是 db1,而我要插入记录的数据库是 db2。

  insert into db2.employee(id, name, group) values(id, <db1.employee.name>, <db1.employee.group>) where id in (select id from archived limit 2);

如您所见,值必须从 db1(当前数据库)的员工表中选择,然后插入到 db2 的员工表中。

我知道查询是错误的 - 但我只是写信来解释我正在尝试做的事情。

我将如何使用 postgres_fdw 制定查询?

我已经尝试使用这个查询以相反的方式做一些事情

INSERT INTO  employee select * from 
dblink('host=10.1.1.1
user=user
password=password
dbname=mydb', 'select * from employee') tt(
id int,
name character varying,
);

编辑:请注意,我想进行远程插入和本地选择。当我在 db2 中作为我的本地数据库而不是 db1 运行查询时,我似乎能够使用上面的查询来实现这一点

最佳答案

您不能像在 MySQL 中那样直接访问不同数据库中的表(MySQL 数据库 对应于 PostgreSQL schema)。

因此,也许您可​​以通过在单个数据库中使用不同的模式来实现您想要的。

如果您确实需要更新不同数据库中的表,则必须使用 postgres_fdw 外部数据包装器来访问外部表。

您必须在数据库 db1 中定义一个外部表——我们称它为 foreign_employee,它指向 db2 中的一个表。

那么你可以这样做:

INSERT INTO foreign_employee
SELECT e.*
FROM employee e
JOIN archived a USING id
LIMIT 2;

请注意,LIMIT 在这里有点奇怪,因为查询结果中没有隐式顺序,除非您使用 ORDER BY 强制顺序。

关于database - 我将如何使用 postgres_fdw 将插入查询制定到另一个数据库中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40589822/

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