【发布时间】:2014-05-21 18:34:09
【问题描述】:
在 Postgres 中,您可以使用 dblink 链接到其他数据库,如下所示:
SELECT *
FROM dblink (
'dbname=name port=1234 host=host user=user password=password',
'select * from table'
) AS users([insert each column name and its type here]);
但这很冗长。
我通过使用dblink_connect 和dblink_disconnect 来缩短它,从我的dblink 查询中抽象出连接字符串。但是,这仍然给我留下了手动表定义(即[insert each column name and its type here])。
除了手动定义表格之外,有没有办法可以使用 TYPE 或其他任何可重复使用的东西来定义它?
在我的例子中,我必须加入的远程表的数量和所涉及的列的数量使我的查询非常庞大。
我尝试了一些类似的方法:
SELECT *
FROM dblink (
'myconn',
'select * from table'
) AS users(postgres_pre_defined_type_here);
但我收到以下错误:
ERROR: a column definition list is required for functions returning "record"
【问题讨论】:
-
不幸的是,我认为没有任何方法可以将类型用作返回
RECORD的函数的列定义列表。 -
一条记录可能被转换为一个众所周知的行类型。但是一组记录不能,AFAIK。
标签: postgresql plpgsql postgresql-9.3