Postgres dblink的使用

本文介绍如何在PostgreSQL中安装和使用dblink模块,实现远程访问其他PostgreSQL数据库。包括编译安装步骤、导入必要文件及基本操作示例。

Postgres dblink的使用  


|字号 订阅

   Postgresql也有类似Oracle dblink的功能,可以远程访问Postgresql数据库,但需要手工安装dblink,
下面是dblink的安装过程和简单使用。

一 dblink的安装
1.1 编译
#cd postgres源码安装目录/contrib/dblink
# make

1.2 安装dblink
[root@pg1 dblink]# make install
/bin/mkdir -p '/opt/pgsql/lib'
/bin/mkdir -p '/opt/pgsql/share/contrib'
/bin/sh ../../config/install-sh -c -m 755  dblink.so '/opt/pgsql/lib/dblink.so'
/bin/sh ../../config/install-sh -c -m 644 ./uninstall_dblink.sql '/opt/pgsql/share/contrib'
/bin/sh ../../config/install-sh -c -m 644 dblink.sql '/opt/pgsql/share/contrib'

安装完成之后,会在目录 /opt/pgsql/lib/ 产生一个lib文件 dblink.so;
同时在目录 $PGHOME/share/contrib下产生一个 dblink.sql文件,这个文件用来创建
dblink各类函数。 

1.3 导入 dblink.sql 到目标库
# chown -R postgres:postgres /opt/pgsql
su - postgres
[postgres@pg1 contrib]$ psql -d mydb -f dblink.sql
SET
CREATE FUNCTION
CREATE FUNCTION
CREATE FUNCTION
CREATE FUNCTION
REVOKE
REVOKE
CREATE FUNCTION
CREATE FUNCTION
CREATE FUNCTION
CREATE FUNCTION
CREATE FUNCTION
CREATE FUNCTION
CREATE FUNCTION
CREATE FUNCTION
CREATE FUNCTION
CREATE FUNCTION
CREATE FUNCTION
CREATE FUNCTION
CREATE FUNCTION
CREATE FUNCTION
CREATE FUNCTION
CREATE FUNCTION
CREATE FUNCTION
CREATE FUNCTION
CREATE FUNCTION
CREATE FUNCTION
CREATE FUNCTION
CREATE FUNCTION
CREATE TYPE
CREATE FUNCTION
CREATE FUNCTION
CREATE FUNCTION
CREATE FUNCTION
CREATE FUNCTION
CREATE FUNCTION
CREATE FUNCTION
CREATE FUNCTION
CREATE FUNCTION
CREATE FUNCTION
CREATE FUNCTION
CREATE FUNCTION
CREATE FUNCTION
CREATE FUNCTION

二 dblink的简单使用,
2.1 dblink主要函数简介
dblink_connect — opens a persistent connection to a remote database
dblink_send_query — sends an async query to a remote database
dblink_get_result — gets an async query result
dblink — executes a query in a remote database
dblink_disconnect — closes a persistent connection to a remote database

2.2dblink的使用 目标库: IP=192.168.1.27 port=1921 database=testdb
--建立连接
mydb=> select dblink_connect('dblink_testdb','host=192.168.1.27  port=1921 dbname=testdb user=test_user password=test_user' ); 
 dblink_connect 
----------------
 OK
(1 row)

--发送异步查询请求
mydb=> select dblink_send_query('dblink_testdb','select * from test_id');
 dblink_send_query 
-------------------
                 1
(1 row)

--获取异步查询结果
mydb=> select * from dblink_get_result('dblink_testdb') as t1 (id integer);
 id  
-----
 100
 101
(2 rows)

--Insert 
mydb=> select dblink_exec('dblink_testdb','insert into test_id values (103)');
 dblink_exec 
-------------
 INSERT 0 1
 
--或者直接查询 
mydb=> select * from dblink('dblink_testdb','select * from test_id') as t1 (id integer);
id  
-----
 100
 101
 103
(3 rows)

--断开dblink连接
mydb=> select dblink_disconnect('dblink_testdb');
 dblink_disconnect 
-------------------
 OK
(1 row)


    以上就是Postgresql dblink的简单使用过程,感觉没有Oracle的dblink使用方便,有关dblink
的详细但要可以查看Postgresql官网文档详细介绍。

原文地址:http://francs3.blog.163.com/blog/static/4057672720108401139868/

在 SQL Server 中创建指向 PostgreSQL 数据库的数据库链接(DBLink),通常需要通过 **链接服务器(Linked Server)** 的方式实现。SQL Server 本身并不直接支持 PostgreSQLDBLink,但可以通过使用 **ODBC 驱动程序** 或 **OLE DB 提供程序** 来连接 PostgreSQL。 以下是配置步骤: ### 1. 安装 PostgreSQL ODBC 驱动程序 首先,在 SQL Server 所在的 Windows 服务器上安装 PostgreSQL 的 ODBC 驱动程序。推荐使用官方提供的 [psqlODBC](https://www.postgresql.org/ftp/odbc/) 驱动程序。 - 下载并安装适用于 Windows 的 psqlODBC 驱动程序。 - 安装完成后,打开“ODBC 数据源管理器”(`odbcad32.exe`),添加一个系统 DSN 指向目标 PostgreSQL 数据库。 ### 2. 在 SQL Server 中创建链接服务器 打开 SQL Server Management Studio (SSMS),执行以下 T-SQL 命令来创建链接服务器: ```sql EXEC sp_addlinkedserver @server = 'PostgreSQL_Link', -- 自定义链接服务器名称 @srvproduct = 'PostgreSQL', @provider = 'MSDASQL', -- 使用 ODBC 提供程序 @datasrc = 'Your_PostgreSQL_DSN'; -- 刚才配置的 ODBC DSN 名称 ``` 如果未使用 DSN,也可以直接指定连接字符串: ```sql EXEC sp_addlinkedserver @server = 'PostgreSQL_Link', @srvproduct = 'PostgreSQL', @provider = 'MSDASQL', @provstr = 'DRIVER={PostgreSQL Unicode};SERVER=your.pg.server;PORT=5432;DATABASE=yourdb;UID=youruser;PWD=yourpassword;'; ``` ### 3. 设置安全上下文(登录映射) 为确保 SQL Server 能够以正确的身份验证访问 PostgreSQL,可以设置登录映射: ```sql EXEC sp_addlinkedsrvlogin @rmtsrvname = 'PostgreSQL_Link', @useself = 'false', @locallogin = NULL, @rmtuser = 'postgres_user', @rmtpassword = 'postgres_password'; ``` ### 4. 查询 PostgreSQL 数据 创建完成后,可以使用 `OPENQUERY` 或四部分对象名来查询 PostgreSQL 表: ```sql SELECT * FROM OPENQUERY(PostgreSQL_Link, 'SELECT * FROM your_table'); ``` 或者: ```sql SELECT * FROM [PostgreSQL_Link]...["schema_name"."table_name"]; ``` ### 注意事项 - 确保 SQL Server 服务账户有权限访问 PostgreSQL 的端口(默认 5432)。 - 如果遇到性能问题,建议优化查询语句,避免全表扫描。 - 对于复杂的数据类型映射,可能需要调整驱动程序或中间层转换逻辑。 ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值