文档中心MogDBMogDB StackUqbar
v5.0

文档:v5.0

支持的版本:

其他版本:

dblink

dblink用于在远程数据库中执行查询,通常是一个SELECT,但是也可以是任意返回行的SQL语句。

当给出两个text参数时,首先将第一个作为持久连接的名称进行查找;如果找到,则在该连接上执行命令。如果未找到,则将第一个参数视为与dblink_connect一样的连接信息字符串,并且仅在此命令期间进行指示的连接。

 

安装依赖包

5.0.0和5.0.1版本的dblink需要libtool-ltdl-devel。

卸载libtool-ltdl-devel:

sudo rpm -e libtool-ltdl libtool-ltdl-devel

检查包是否已经安装:

sudo rpm -qa |grep libtool-ltdl

安装依赖包:

sudo yum install -y libtool-ltdl-devel

 

dblink默认参与编译,登录数据库后通过CREATE EXTENSION dblink;语句创建插件即可使用。

您也可以通过以下步骤单独安装dblink。

  1. 访问MogDB下载页面,下载所需版本的dblink插件。

  2. 解压插件包,例如:

    tar -xzvf dblink-1.0-x.x.x-01-CentOS-x86_64.tar.gz
  3. 使用数据库初始用户omm进入插件所在目录下,执行make install命令。

    cd dblink/
    make install
  4. 连接到数据库,执行CREATE EXTENSION dblink;插件即可使用。

    MogDB=# CREATE EXTENSION dblink;
    CREATE EXTENSION

 

  • sql端创建拓展

    CREATE EXTENSION dblink;
  • 检查dblink是否创建成功

    \dx
  • 连接远端数据库执行查询操作

    SELECT * FROM dblink('dbname=postgres host=127.0.0.1 port=12345 user=test password=Test123456'::text, 'select * from dblink_test'::text)t(id int, name varchar);
  • 创建连接

    SELECT dblink_connect('dblink_conn','hostaddr=127.0.0.1 port=12345 dbname=postgres user=test password=Test123456');

    dblink是会话级别,dblink_connect只在当前会话中可连接,会话断开即dblink也关闭。

  • 数据库表操作

    (视图不支持查询操作)

    SELECT dblink_exec('dblink_conn', 'create table ss(id int, name int)');
    SELECT dblink_exec('dblink_conn', 'insert into ss values(2,1)');
    SELECT dblink_exec('dblink_conn', 'update ss set name=2 where id=1');
    SELECT dblink_exec('dblink_conn', 'delete from ss where id=1');

    使用dblink_exec函数需注意插入的字符字段要用两个单引号。

  • 解除连接

    SELECT dblink_disconnect('dblink_conn')

 

常用的dblink函数

  • 加载dblink扩展

    CREATE EXTENSION dblink;
  • 打开一个到远程数据库的持久连接

    SELECT dblink_connect(text connstr);
  • 关闭一个到远程数据库的持久连接

    SELECT dblink_disconnect();
  • 在远程数据库执行查询

    SELECT * FROM dblink(text connstr, text sql);
  • 在远程数据库执行命令

    SELECT dblink_exec(text connstr, text sql);
  • 返回所有打开的命名dblink连接的名称

    SELECT dblink_get_connections();
  • 发送一个异步查询到远程数据库

    SELECT dblink_send_query(text connname, text sql);
  • 检查连接是否正在忙于一个异步查询

    SELECT dblink_is_busy(text connname);
  • 删除扩展

    DROP EXTENSION dblink;

 

注意事项

目前dblink仅支持MogDB数据库访问另一个MogDB数据库,不支持MogDB数据库访问PostgreSQL数据库。

Copyright © 2011-2024 www.enmotech.com All rights reserved.