在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查询中抽象连接字符串来缩短它.但是,这仍然留给我手动表定义(即,[在此处插入每个列名称及其类型]).
而不是手动定义表,有没有办法我可以用TYPE或其他任何可重复使用的东西来定义它?
在我的例子中,我必须加入的远程表的数量和涉及的列数使我的查询量大.
我尝试过以下方面:
SELECT * FROM dblink ( 'myconn','select * from table' ) AS users(postgres_pre_defined_type_here);
但我收到以下错误:
错误:返回“记录”的函数需要列定义列表
在考虑为dblink创建多个类型时,您也可以接受创建多个函数.这些功能定义明确且易于使用.
例:
create or replace function dblink_tables() returns table (table_schema text,table_name text) language plpgsql as $$ begin return query select * from dblink ( 'dbname=test password=mypassword','select table_schema,table_name from information_schema.tables') as tables (table_schema text,table_name text); end $$; select table_name from dblink_tables() where table_schema = 'public' order by 1
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。