gpt4 book ai didi

sql - 带有附加列的 PostgreSQL INSERT FROM SELECT

转载 作者:行者123 更新时间:2023-11-29 12:19:04 26 4
gpt4 key购买 nike

我在数据库 DB1 中有表 T1,在数据库 DB2 中有表 T2,这些表几乎相同T1 中的 C_additional 列除外,它在 T2 中不存在。我需要将所有行从 T2 传输到 T1,为我插入的每一行设置一些 C_additional 值。例如:T1T2 只有一列 C1 类型为 integerT1 还有 C_additional 类型的 text 列,所以我的代码如下所示:

INSERT INTO T1
SELECT
C1,
C_additional='needed_value'
FROM dblink(
'hostaddr=127.0.0.1 port=5432 dbname=DB2 user=postgres password=postgres',
'SELECT * FROM T2')
AS T2_row(C1 integer)

我收到以下错误:

ERROR: column "C_additional" does not exist
SQL state: 42703
Hint: There is a column named "C_additional" in table "T1", but it cannot be referenced from this part of the query.

如何使用 SQL 进行数据传输,还是应该使用 PG/SQL?

最佳答案

您可以在 select 子句之前用括号指定目标列:

INSERT INTO T1
(c1, c_additional) -- here
SELECT
C1,
'needed_value' -- just select a constant here
FROM dblink(
'hostaddr=127.0.0.1 port=5432 dbname=DB2 user=postgres password=postgres',
'SELECT * FROM T2')
AS T2_row(C1 integer)

关于sql - 带有附加列的 PostgreSQL INSERT FROM SELECT,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36882848/

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