可以使用PostgreSQL TYPE来定义dblink表吗?

发布时间:2020-05-17 发布网站:脚本之家
脚本之家收集整理的这篇文章主要介绍了可以使用PostgreSQL TYPE来定义dblink表吗?脚本之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
在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

总结

以上是脚本之家为你收集整理的可以使用PostgreSQL TYPE来定义dblink表吗?全部内容,希望文章能够帮你解决可以使用PostgreSQL TYPE来定义dblink表吗?所遇到的程序开发问题。

如果觉得脚本之家网站内容还不错,欢迎将脚本之家网站推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您喜欢交流学习经验,点击链接加入脚本之家官方QQ群:1065694478