【openGauss跨库访问】
创建测试用户和数据库、安装dblink扩展、建立跨库连接、执行远程查询和关闭连接。使用dblink时需注意密码安全、网络延迟和权限管理等问题,确保跨库查询的安全性和稳定性。
·
openGauss数据库
openGauss是一款企业级开源关系型数据库管理系统,深度融合华为在数据库领域多年的研发经验,基于SQL2003标准语法,采用木兰宽松许可证v2发行。openGauss作为新一代企业级开源数据库,在性能、可用性、安全性、智能运维等方面具备显著优势,特别适合对数据库有高要求的企业级应用场景。其开源特性和活跃的社区生态为用户提供了长期可靠的技术支撑
核心特性
- 高性能架构
- 多核优化:面向多核架构的极致性能,支持NUMA化数据结构
- 向量化执行:支持行存转向量化,复杂查询性能提升50%以上
- 企业级安全:支持数据全程加密,保障隐私安全,提供数据防篡改能力,满足实时性严苛要求
- 智能运维与AI能力:内置AI算子,支持模型训练与预测
使用dblink实现openGauss跨库查询
创建测试用户和测试数据库
--前置操作。
CREATE USER user1 WITH SYSADMIN PASSWORD 'xxxxxx';
CREATE USER user2 WITH SYSADMIN PASSWORD 'xxxxxx';
CREATE DATABASE db1 DBCOMPATIBILITY = 'A'; --远端数据库
CREATE DATABASE db2 DBCOMPATIBILITY = 'A'; --测试DATABASE LINK数据库
\c db1 user1
--创建普通表。
CREATE TABLE remote_tb(f1 int, f2 text, f3 text[]);
INSERT INTO remote_tb VALUES (0,'a','{"a0","b0","c0"}');
INSERT INTO remote_tb VALUES (1,'bb','{"a1","b1","c1"}');
INSERT INTO remote_tb VALUES (2,'cc','{"a2","b2","c2"}');
--创建普通表。
\c db2 user2
CREATE TABLE local_tb(f1 int, f2 text, f3 text[]);
INSERT INTO local_tb VALUES (2,'c','{"a2","b2","c2"}');
- 环境准备和权限配置
首先确保dblink扩展已安装并授权:
-- 在DB2中创建dblink扩展(需管理员权限)
CREATE EXTENSION IF NOT EXISTS dblink;
-- 确保user2用户有使用dblink的权限
GRANT USAGE ON FOREIGN DATA WRAPPER dblink_fdw TO user2;
- 创建DBLINK连接
在DB2中创建到DB1的dblink连接:
-- 在DB2中执行,使用user2用户登录
-- 创建持久的dblink连接
SELECT dblink_connect('my_remote_conn',
'host=localhost port=5432 dbname=db1 user=user1 password=XXXX');
-- 验证连接是否成功
SELECT dblink_connect('my_remote_conn');
- 示例
基本查询示例:
-- 查询远程数据库DB1中的remote_tb表
SELECT * FROM dblink('my_remote_conn', 'SELECT * FROM public.remote_tb')
AS remote_table(f1 text, f2 text, f3 text);
-- 带条件的跨库查询
SELECT * FROM dblink('my_remote_conn',
'SELECT f1, f2 FROM public.remote_tb WHERE f1 < 100')
AS remote_table(f1 text, f2 text);
-- 将远程数据插入到本地表
INSERT INTO public.local_tb (f1, f2, f3)
SELECT f1, f2, id FROM temp_remote_data;
连接关闭
-- 使用完毕后关闭连接
SELECT dblink_disconnect('my_remote_conn');
-- 关闭所有dblink连接
SELECT dblink_disconnect();
注意事项:
密码安全:实际生产环境中建议使用密码文件或连接池管理密码
网络延迟:跨库查询性能受网络影响,建议批量操作
错误处理:务必添加适当的错误处理机制
权限管理:确保用户有访问远程表的权限
鲲鹏昇腾开发者社区是面向全社会开放的“联接全球计算开发者,聚合华为+生态”的社区,内容涵盖鲲鹏、昇腾资源,帮助开发者快速获取所需的知识、经验、软件、工具、算力,支撑开发者易学、好用、成功,成为核心开发者。
更多推荐


所有评论(0)