暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

使用DBLink跨库查询数据

成子 2023-11-23
325

PolarDB PostgreSQL版(兼容Oracle)提供了DBLink功能,您可以通过DBLink功能实现跨库查询数据。本文介绍如何通过DBLink跨库查询数据。

前提条件

  • 已创建源集群和目标集群。具体操作,请参见创建PolarDB PostgreSQL版(兼容Oracle)集群

    说明

    PolarDB PostgreSQL版(兼容Oracle)的DBLink目前支持如下两种连接方式:

    • 源数据库为PolarDB PostgreSQL版(兼容Oracle)集群;目标数据库为PolarDB PostgreSQL版(兼容Oracle)集群。
    • 源数据库为PolarDB PostgreSQL版(兼容Oracle)集群;目标数据库为ECS自建PostgreSQL数据库。
  • 已在源集群和目标集群中创建数据库。具体操作,请参见创建数据库
  • 已在目标数据库中创建表。

注意事项

目前仅支持在源集群上查询目标集群数据,不支持在目标集群上查询源集群数据。

参数配置

PolarDB PostgreSQL版(兼容Oracle)提供了polar_enable_pushable_unsafe_collate_remote和polar_enable_pushable_all_any_remote参数,用于提升查询性能。

  • polar_enable_pushable_unsafe_collate_remote(会话级别参数):支持unsafe collate下推,默认打开。

    如果关闭该参数,部分函数因为考虑collate规则,不会主动下推。

    • 打开命令:


      SET polar_enable_pushable_unsafe_collate_remote = on;
    • 关闭命令:


      SET polar_enable_pushable_unsafe_collate_remote = off;
  • polar_enable_pushable_all_any_remote(会话级别参数):支持ALL/ANY下推,默认打开。

    如果关闭该参数,部分ALL/ANY表达式则不会下推。

    • 打开命令:


      SET polar_enable_pushable_all_any_remote = on;
    • 关闭命令:


      SET polar_enable_pushable_all_any_remote = off;

操作步骤

  1. 创建DBLink。

    PolarDB PostgreSQL版(兼容Oracle)提供了如下两种创建方式:

  2. 连接源集群。具体操作,请参见连接数据库集群
  3. 在源集群上跨库查询数据。

    查询语句如下:


    SELECT * FROM <dbname>@<dblinkname>;
    • <dbname>:目标集群的数据库里的表。

      说明

      该表必须在DBLink所连接的目标数据库中。

    • <dblinkname>:DBLink名称。

    您可以在控制台查看DBLink名称和DBLink的目标数据库,如下图所示。

    dblink

示例

在目标数据库中创建一个用于测试的表test,并在表中插入测试数据。命令如下:


CREATE TABLE test(id int);
INSERT INTO test VALUES(1);

连接源数据库,执行如下查询命令:


SELECT * FROM test@dblinkname;

查询结果如下:


 id
----
  1
(1 row)
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论