ITPub博客

首页 > 数据库 > 国内数据库 > YashanDB dblink语法

YashanDB dblink语法

国内数据库 作者:崖山数据库系统YashanDB 时间:2025-04-01 17:52:47 0 删除 编辑

该语法用于YashanDB(源端)对远端数据库(目的端)的表操作,目的端可以为同构数据库(YashanDB)或异构数据库(Oracle)。

dblink_name指在 CREATE DATABASE LINK时所创建的远端数据库名称。

#使用说明

  • 通过dblink操作远端数据库的表时,需满足如下要求:

    Note:

    在分布式部署中,操作远端表时采用列存,除下表所列数据类型要求外,还应 遵循列存的 数据类型支持范围。

    目的端为Oracle 目的端为YashanDB
    需先 安装libaio库和下载Oracle Instant Client安装包。 -
    远端表字段需为下列数据类型:
    SMALLINT
    INT
    FLOAT/BINARY_FLOAT
    BINARY_DOUBLE
    NUMBER/DECIMAL
    DATE
    TIMESTAMP
    INTERVAL YEAR TO MONTH
    INTERVAL DAY TO SECOND
    CHAR
    VARCHAR
    NCHAR
    NVARCHAR
    VARCHAR2
    NVARCHAR2
    RAW
    BLOB(源端为分布式部署时,不适用)
    CLOB(源端为分布式部署时,不适用)
    NCLOB(源端为分布式部署时,不适用)
    TIMESTAMP WITH TIME ZONE(源端为分布式部署时,不适用)
    TIMESTAMP WITH LOCAL TIME ZONE(源端为分布式部署时,不适用)
    远端表字段需为下列数据类型:
    TINYINT
    SMALLINT
    INT
    BIGINT
    FLOAT/BINARY_FLOAT
    DOUBLE/BINARY_DOUBLE
    NUMBER
    BIT
    BOOLEAN
    DATE
    TIME
    TIMESTAMP
    INTERVAL YEAR TO MONTH
    INTERVAL DAY TO SECOND
    CHAR
    VARCHAR
    RAW
    ROWID(源端为分布式部署时,不适用)
  • 在分布式部署中,无法对远端数据库的表进行INSERT、UPDATE、DELETE、SEQUENCE、PROCEDURE以及FUNCTION操作。

  • 在使用dblink的场景下,不支持通过 二阶段提交(Two-phase Commit)保证所有资源同时提交或回滚某个事务。

#查询远端表

对远端表进行 SELECT操作时,存在如下约束:

  • 不能采用table.column@dblink形式。
  • 单次最多查询32个远端表。

示例

-- 创建远端表conn sys/sysCREATE TABLE table_test(c1 INT);-- 创建dblink,并访问远端表conn sales/salesCREATE DATABASE link link_test CONNECT TO sys IDENTIFIED BY sys USING '192.168.1.2:1688';SELECT * FROM table_test@link_test;-- 更改远端表的元数据conn sys/sysALTER TABLE table_test ADD COLUMN(c2 INT);conn sales/salesSELECT * FROM table_test@link_test;C1           C2          
------------ ------------
Copied!

#插入远端表

对远端表进行 INSERT操作时,存在如下约束:

  • 不允许多表INSERT。
  • 不允许指定分区INSERT。
  • 不允许执行INSERT DUPLICATE UPDATE语句。
  • 不允许执行INSERT RETURN语句。
  • INSERT SELECT不支持LOB类型。

示例(单机、共享集群部署)

-- 创建远端表conn sys/sysCREATE TABLE table_test(c1 INT, c2 INT);-- 创建dblink,并访问远端表conn sales/salesCREATE DATABASE link link_test CONNECT TO sys IDENTIFIED BY sys USING '192.168.1.2:1688';SELECT * FROM table_test@link_test;-- 插入数据INSERT INTO table_test@link_test VALUES(1,2);
Copied!

#更新远端表

对远端表进行 UPDATE操作时,存在如下约束:

  • filter与更新本地数据库的对象的filter相比:
    • 不能使用聚集函数。
    • 不能使用窗口函数。
    • 不能使用子查询。
    • 不能使用序列。
    • 不能使用自定义函数(包括UPDATE SET语句)。
  • 不允许多表UPDATE。
  • 不允许指定分区UPDATE。

示例(单机、共享集群部署)

-- 创建远端表conn sys/sysCREATE TABLE table_test(c1 INT, c2 INT);-- 创建dblinkconn sales/salesCREATE DATABASE link link_test CONNECT TO sys IDENTIFIED BY sys USING '192.168.1.2:1688';-- 更改远端表的元数据UPDATE table_test@link_test SET c1=1,c2=2;
Copied!

#删除远端表

对远端表进行 DELETE操作时,存在如下约束:

  • filter与删除本地数据库的对象的filter相比:
    • 不能使用聚集函数。
    • 不能使用窗口函数。
    • 不能使用子查询。
    • 不能使用序列。
    • 不能使用自定义函数。
  • 不允许多表DELETE。
  • 不允许指定分区DELETE。

示例(单机、共享集群部署)

conn sys/sysCREATE TABLE table_test(c1 INT);-- 创建dblinkconn sales/salesCREATE DATABASE link link_test CONNECT TO sys IDENTIFIED BY sys USING '192.168.1.2:1688';-- 删除远端表数据DELETE FROM table_test@link_test WHERE c1=1;


来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/70028812/viewspace-3079695/ ,如需转载,请注明出处,否则将追究法律责任。

下一篇: YashanDB RegExp语法
请登录后发表评论 登录
全部评论
崖山数据库系统YashanDB是深圳计算科学研究院完全自主研发设计的新型数据库系统,融入原创理论,支持单机/主备、共享集群、分布式等多种部署方式,覆盖OLTP/HTAP/OLAP交易和分析混合负载场景,为客户提供一站式的企业级融合数据管理解决方案。

注册时间:2023-04-11

  • 博文量
    722
  • 访问量
    640211