**
关于人大金仓数据库不同数据库之间实现跨库查询,同步数据的存储过程
**
1、基础知识
- 在人大金仓中,一个连接下可以有多个数据库
- 一个数据库下包含多个模式,
- 一个模式下存储多个数据表。
- 但是在做查询等操作时只能操作一个数据库。需要通过切换到对应数据库进行操作。如图所示
2、案例情况:
不同数据库:database1,database2
不同模式:schema1,schema2
关系如图所示
3、业务需求
1.查询数据库database2中模式schemaB下的表tableB的字段,
2.并将查询的字段同步插入到数据库database1中的模式schemaA下的tableA中
4、解决方案:
1.存储过程实现同步。
2.创建新的连接实现跨数据库查询
//同步存储过程
CREATE OR REPLACE
PROCEDURE "schemaA"."PROC_SYN_tableA"() AS DECLARE
str_sql TEXT;
BEGIN
str_sql := '
insert into "schemaA"."tableA ("id","name")
SELECT * FROM dblink(''hostaddr=127.0.0.1 port=54321 dbname=database2 user=用户名 password=密码'',''select id,name from schemaB.tableB'')AS base(id text,name text)
';
EXECUTE IMMEDIATE str_sql;
END;
//执行上述存储过程
CALL "schemaA"."PROC_SYN_tableA"();
注意:
1、在需要同步的数据库下新建存储过程
2、新建的查询连接信息(即SELECT * FROM dblink语句),是数据源的连接信息
5、实现效果:
表tableB所有数据的id和name信息同步到表tableA
附参考文献网址:
关于Kingbase触发器跨库设置https://blog.csdn.net/u014704612/article/details/119343005