如何在 PostgreSQL 中使用(安装)dblink?
我习惯了 Oracle 并在我的架构中创建 dblink,然后访问远程数据库,如下所示:mytable@myremotedb
,是否有对 PostgreSQL 做同样的事情?
现在我正在使用 dblink,如下所示:
SELECT logindate FROM dblink('host=dev.toto.com
user=toto
password=isok
dbname=totofamily', 'SELECT logindate FROM loginlog');
当我执行此命令时,出现以下错误:
提示:没有函数与给定的名称和参数类型匹配。您可能需要添加显式类型转换。
有人有想法吗?在使用dblinks之前我们是否必须“激活”它们或者做一些事情?
我们要查询的远程数据库有什么要做的吗?我们还必须激活 dblink 吗?我一直遇到无法建立连接
。该行的类型为:
SELECT dblink_connect_u('host=x.x.x.x dbname=mydb user=root port=5432');
IP 地址正确并且 Postgres 正在远程服务器上运行。有什么想法吗?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(7)
从PostgreSQL 9.1开始,附加模块的安装很简单。 可以使用dblink等注册扩展href="https://www.postgresql.org/docs/current/sql-createextension.html" rel="noreferrer">
CREATE EXTENSION
:安装到您的默认架构中,该架构默认情况下是
public
。在运行命令之前,请确保您的search_path
设置正确。该架构必须对所有使用该架构的角色可见。请参阅:或者,您可以安装到您选择的任何架构:
请参阅:
每个数据库运行一次。或者在标准系统数据库
template1
中运行它,将其自动添加到每个新创建的数据库中。 手册中的详细信息。您需要安装提供模块的文件首先在服务器上。对于 Debian 及其衍生版本,这将是软件包
postgresql-contrib-9.1
- 对于 PostgreSQL 9.1,明显地。从 Postgres 10 开始,只有一个postgresql-contrib
元包。Since PostgreSQL 9.1, installation of additional modules is simple. Registered extensions like
dblink
can be installed withCREATE EXTENSION
:Installs into your default schema, which is
public
by default. Make sure yoursearch_path
is set properly before you run the command. The schema must be visible to all roles who have to work with it. See:Alternatively, you can install to any schema of your choice with:
See:
Run once per database. Or run it in the standard system database
template1
to add it to every newly created DB automatically. Details in the manual.You need to have the files providing the module installed on the server first. For Debian and derivatives this would be the package
postgresql-contrib-9.1
- for PostgreSQL 9.1, obviously. Since Postgres 10, there is just apostgresql-contrib
metapackage.我正在使用 DBLINK 连接内部数据库以进行跨数据库查询。
参考本文。
安装DbLink扩展。
验证DbLink:
测试数据库连接:
I am using DBLINK to connect internal database for cross database queries.
Reference taken from this article.
Install DbLink extension.
Verify DbLink:
Test connection of database:
在 Linux 上,找到 dblink.sql,然后在 postgresql 控制台中执行类似以下内容以创建所有必需的函数:
您可能需要安装 contrib 软件包: sudo apt-get install postgresql-contrib
On linux, find dblink.sql, then execute in the postgresql console something like this to create all required functions:
you might need to install the contrib packages:
sudo apt-get install postgresql-contrib
安装模块通常需要您运行数据库安装中包含的 SQL 脚本。
假设类似 linux 的操作系统
验证位置并运行它
Installing modules usually requires you to run an sql script that is included with the database installation.
Assuming linux-like OS
Verify the location and run it
可以通过使用以下方式添加:
It can be added by using:
另外你还会问,
dblink
安装在哪里?在大多数情况下,建议安装常见 Postgers 扩展的位置是 pg_catalog 架构。如果您在 pg_catalog 中安装扩展,则所有相关函数在任何模式中都可用。如果您在
public
中安装扩展,那么在另一个模式中,您还必须定义模式。例如,如果 dblink 安装在
public
中,则在架构myschema
中,您必须定义public
架构。例如,如果 dblink 安装在
pg_catalog
中,则在方案myschema
中,您不必定义public
schema:schema
pg_catalog
中的所有函数都会自动附加到其他 schema。要在
pg_catalog
中安装dblink
:You shall ask additionally, where to install
dblink
?On most cases recommended location where to install common Postgers extensions is
pg_catalog
schema. If you install extensions in pg_catalog, then all related functions are available within any schema. If you install extension inpublic
, then inside another schema, you have to define also schema.For example, if dblink is installed in
public
, then within schemamyschema
, you have to definepublic
schema.For example, if dblink is installed in
pg_catalog
, then within schememyschema
, you do not have to definepublic
schema:All functions in schema
pg_catalog
are appended to other schemas automatically.To install
dblink
inpg_catalog
: