在Postgres里,你可以使用dblink
像这样链接到你的其他数据库:可能使用PostgreSQL类型来定义一个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。 –