首批通过分布式安全可靠测评,为关键业务系统打造
通过 DBLink 访问远端数据库中的数据
更新时间:2026-04-04 19:56:53
DBLink 创建成功后,可以通过 DBLink 访问远端数据库的对象,对象包括表和视图等。
使用限制
暂不支持 OceanBase 数据库的 MySQL 租户通过 DBLink 读取 MySQL 数据库的数据,也不支持 MySQL 数据库通过 DBLink 读取 OceanBase 数据库的 MySQL 租户的数据。
MySQL 模式下,支持通过 DBLink 访问的数据类型如下:
数值类型:TINYINT、SMALLINT、MEDIUMINT、INT、BIGINT、FLOAT、DOUBLE、DECIMAL
时间类型:DATE、TIME、YEAR、DATETIME、TIMESTAMP
字符类型:CHAR、VARCHAR、TINYBLOB、TINYTEXT、BLOB、TEXT、MEDIUMBLOB、LONGBLOB、LONGTEXT
其他类型:ENUM、SET
注意
受限于 OBClient,当前通过 DBLlink 读取表数据时,会将远端表中
ENUM和SET类型的列当作VARCHAR类型列处理。
有关各数据类型的详细介绍及说明,请参见 数据类型概述。
前提条件
已创建 DBLink,创建 DBLink 的详细操作,参见 创建 DBLink。
访问远端数据库表的数据
使用 SELECT... FROM 表名@DBLink 名 语法来访问远端数据库中表的数据,SQL 语句如下:
SELECT select_expr_list
FROM table_name@dblink_name
WHERE where_conditions;
select_expr_list:
table_name.*
| table_alias_name.*
| expr [[AS] column_alias_name]
语句使用说明:
select_expr_list:指定待查询的表达式或列名,不同的列之间用英文逗号(,)隔开,星号(*)表示所有列。table_name.*:指定从指定的表、视图中选择所有的列。table_alias_name.*:指定表、视图的别名。expr [[AS] column_alias_name]:指定查询列或表达式的别名,AS为可选。
table_name@dblink_name:指定待查询的远端数据库中的表,多个数据库之间用英文逗号(,)隔开。默认访问创建 DBLink 时所指定的数据库中的表,如果需要访问其他数据库中的表,可以在 SQL 语句中指定,格式为database_name.table_name@dblink_name。where_conditions:指定筛选条件,查询结果中仅包含满足条件的数据,为可选项。
更多 DBLink 相关的查询语句,参见 SELECT 语句。
示例如下:
通过名为
ob_dblink的 DBLink 查询远端数据库中表tbl1的数据。SELECT * FROM tbl1@ob_dblink;通过 DBLink 读取远端数据库
test中的表tbl1表,并与本地数据库的表tbl1做 Join 操作。SELECT a.c_decimal, b.c_double FROM tbl1 a, tbl1@ob_dblink b WHERE a.c_int = b.c_int;通过 DBLink 读取远端数据库
mysql(创建 DBLink 时指定的数据库为test)中的tbl2表。SELECT * FROM mysql.tbl2@ob_dblink;
相关文档
更多 DBLink 相关的操作,请参见以下信息: