gpt4 book ai didi

sql - Postgresql 创建存储数据库链接

转载 作者:行者123 更新时间:2023-11-29 11:47:04 25 4
gpt4 key购买 nike

我知道在 Oracle 中可以创建存储的 dblink,然后在查询中使用它。例如:

创建dblink的脚本:

CREATE PUBLIC DATABASE LINK my_link CONNECT TO my_schema IDENTIFIED BY shema_password USING 'remote';

然后我们可以在查询中使用它:

SELECT * FROM some_table@my_link;

我没有找到适用于 Postgres 的相同解决方案。我不明白我们可以创建命名的 dblink 连接:

为此,我们必须使用带有名称参数的 dblink_connect。但是创建的命名 dblink 将在 session 关闭后销毁。

或者我们可以为每个查询创建 dblink 连接:

SELECT *
FROM dblink('host= port= dbname= user= password=',
'select table_schema, table_name from information_schema.tables where table_schema = ''data''') AS t1 (table_schema TEXT, table_name TEXT);

是否可以在 Postgres 中创建存储的 dblink 并在不同的查询中使用它?或者我应该创建一些函数来返回封装它们的 dblink 连接参数?

我尝试使用外部表并执行后续步骤:

创建 postgres_fdw 扩展:

CREATE EXTENSION IF NOT EXISTS postgres_fdw;

创建服务器:

CREATE SERVER my_server FOREIGN DATA WRAPPER postgres_fdw OPTIONS (host '-', port '-', dbname '-');

并为设置远程用户和密码的用户“sys”创建映射:

CREATE USER MAPPING FOR sys SERVER light_house OPTIONS ( USER 'remote_user', PASSWORD 'remove_password');

GRANT USAGE ON FOREIGN SERVER my_server TO sys;

在模式中创建外部表:

CREATE FOREIGN TABLE system.my_local_table (
colums ..
) SERVER my_server OPTIONS (schema_name 'remote_user', table_name 'remote_table'
);

GRANT SELECT ON TABLE system.home_measurement TO argus_sys;

之后我捕捉到下一个异常:

[2F003] ERROR: password is required 
Description: Non-superuser cannot connect if the server does not request a password.
Help: Target server's authentication method must be changed.

最佳答案

你应该使用 foreign table .

要消除错误消息,请更改远程数据库服务器上的 pg_hba.conf 文件以使用 md5 身份验证(不要忘记重新加载 pg_ctl 重新加载).

关于sql - Postgresql 创建存储数据库链接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41803430/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com