【发布时间】:2016-04-27 07:13:35
【问题描述】:
我在数据库DB1 中有表T1,在数据库DB2 中有表T2,这些表具有几乎相同的列集,除了T1 中的列C_additional,@987654327 中不存在@。我需要将所有行从T2 转移到T1,为我插入的每一行设置一些C_additional 的值。例如:T1 和 T2 只有一列 C1 类型为 integer 和 T1 也有列 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?
【问题讨论】:
-
向我们展示 t1 和 t2 的定义。
-
C_additional='needed_value'是一个布尔表达式,用于评估列名C_additional是否等于常量'needed_value'。如果您想要一个列别名,请使用一个:'needed_value' as c_additional
标签: sql postgresql sql-insert