关键字:
金仓数据库、KingbaseFlySync、KFS、同步程序、replicator、数据同步、数据解析、增量同步、实时同步、字符串空格、除去字符串开头的空格、除去字符串末尾的空格、除去字符串开头和末尾的空格
1.功能介绍
实时同步支持自定义指定字符串字段的空格的处理方式,当前支持三种处理方式,分别为:除去字符串开头的空格、除去字符串末尾的空格、除去字符串开头和末尾的空格。
2.使用场景
KingbaseFlySync在实时同步过程中默认不会对字符串数据中的空格进行处理,源端写入的数据是什么样的,就会同步什么样的数据。在特定场景下,用户希望对同步数据中字符串的空格进行处理,通过相关配置可以自定义指定字符串字段的空格的处理方式。
3.配置使用方式介绍
3.1.配置方式
需要在源端同步服务或者是目标端同步服务配置文件flysync.ini中添加对应的过滤参数并指定字符串空格处理规则文件,具体配置参数如下所示
在源端同步服务(master)配置文件flysync.ini中添加如下参数:
svc-extractor-filters = trimstring
property=replicator.filter.trimstring.definitionsFile=${replicator.home.dir}/support/filters-config/trimstring.json
或
在目标端同步服务(slave)配置文件flysync.ini添中加如下参数:
svc-remote-filters = trimstring
property=replicator.filter.trimstring.definitionsFile=${replicator.home.dir}/support/filters-config/trimstring.json
注意:KFS源端目标端同步服务均支持配置该参数,可根据需要选配。
3.2.字符串空格处理规则文件配置方法
字符串空格处理规则文件trimstring.json的配置示例如下:
1、 场景一: trim 所有模式所有表的指定指定字段的操作
{
"*.*": {
/* RightTrim 所有模式下所有表的 COLUMN_NAME_1 字段值 */
"COLUMN_NAME_1": "R",
/* Trim 所有模式下所有表的 COLUMN_NAME_2 字段值 */
"COLUMN_NAME_2": "T",
/* LeftTrim 所有模式下所有表的 COLUMN_NAME_3 字段值 */
"COLUMN_NAME_3": "L"
}
}
2、 场景二: trim 所有指定模式所有表的指定指定字段的操作
{
"SCHEMA_NAME_1.*": {
/* RightTrim SCHEMA_NAME_1模式下所有表的 COLUMN_NAME_1 字段值 */
"COLUMN_NAME_1": "R",
/* Trim SCHEMA_NAME_1模式下所有表的 COLUMN_NAME_2 字段值 */
"COLUMN_NAME_2": "T"
}
}
3、 场景三: trim 所有模式下指定表的指定指定字段的操作
{
"*.TABLE_NAME_1": {
/* LeftTrim 所有 模式下 TABLE_NAME_1 表的 COLUMN_NAME_1 字段值 */
"COLUMN_NAME_1": "L",
/* Trim 所有 模式下 TABLE_NAME_1 表的 COLUMN_NAME_2 字段值 */
"COLUMN_NAME_2": "T"
},
"*.TABLE_NAME_2": {
/* LeftTrim 所有 模式下 TABLE_NAME_2 表的 COLUMN_NAME_1 字段值 */
"COLUMN_NAME_1": "L",
/* Trim 所有 模式下 TABLE_NAME_2 表的 COLUMN_NAME_2 字段值 */
"COLUMN_NAME_2": "T"
}
}
4、 场景四: trim 指定模式下指定表的指定指定字段的操作
{
"SCHEMA_NAME_1.TABLE_NAME_1": {
/*LeftTrim SCHEMA_NAME_1 模式下 TABLE_NAME_1 表的 COLUMN_NAME_1 字段值 */
"COLUMN_NAME_1": "L",
/*Trim SCHEMA_NAME_1 模式下 TABLE_NAME_1 表的 COLUMN_NAME_2 字段值 */
"COLUMN_NAME_2": "T"
},
"SCHEMA_NAME_2.TABLE_NAME_2": {
/*LeftTrim SCHEMA_NAME_2 模式下 TABLE_NAME_2 表的 COLUMN_NAME_1 字段值 */
"COLUMN_NAME_1": "L",
/*Trim SCHEMA_NAME_2 模式下 TABLE_NAME_2 表的 COLUMN_NAME_2 字段值 */
"COLUMN_NAME_2": "T"
}
}
4.示例
4.1.前置条件
1)完成安装KFS同步程序前的环境准备;
2)源端目标端数据库含有以下表结构:
create table MYTEST.TEST1 (ID int,C1 varchar2(100));
create table MYTEST.TEST2 (ID int,C1 varchar2(100));
create table MYTEST.TEST3 (ID int,C1 varchar2(100));
4.2.操作步骤
1)配置flysync.ini文件,在源端的flysync.ini中添加以下参数
[default]
...
[source]
...
svc-extractor-filters = trimstring #添加字符串空格处理过滤器
property=replicator.filter.trimstring.definitionsFile=/home/oracle/trimstring.json
#指定字符串空格处理规则文件
2)配置字符串空格处理规则文件的trimstring.json文件,内容如下:
{
"MYTEST.TEST1": {
"C1": "R" /*去掉MYTEST模式下的TEST1表的C1字段字符串右边的空格*/
},
"MYTEST.TEST2": {
"C1": "L" /*去掉MYTEST模式下的TEST2表的C1字段字符串左边的空格*/
},
"MYTEST.TEST3": {
"C1": "T" /*去掉MYTEST模式下的TEST3表的C1字段字符串左右两边的空格*/
}
}
注意:配置文件区分大小写,若配置在源端,配置文件中的对象名称要和源端数据库中的对象名称大小写保持一致;若配置在目标端需要和目标端kufl中对象名称的大小写保持一致。
3)安装同步程序并启动。具体的安装步骤参见《Kingbase FlySync 安装部署手册》
4)在源端数据库执行以下操作:
insert into MYTEST.TEST1 values (1,' ceshi001 ');
insert into MYTEST.TEST1 values (2,' ceshi001 ');
insert into MYTEST.TEST1 values (3,' ceshi001 ');
源端数据库的中数据如下所示:

查看目标端的数据,MYTEST.TEST1表C1列字符串的右边的空格都被去除了:

5) 在源端数据库执行以下操作:
insert into MYTEST.TEST2 values (1,' ceshi002 ');
insert into MYTEST.TEST2 values (2,' ceshi002 ');
insert into MYTEST.TEST2 values (3,' ceshi002 ');
源端数据库的中数据如下所示:

查看目标端的数据,MYTEST.TEST2表C1列字符串的左边的空格都被去除了:

6) 在源端数据库执行以下操作:
insert into MYTEST.TEST3 values (1,' ceshi003 ');
insert into MYTEST.TEST3 values (2,' ceshi003 ');
insert into MYTEST.TEST3 values (3,' ceshi003 ');
源端数据库的中数据如下所示:

查看目标端的数据,MYTEST.TEST1表C1列字符串的左右两边的空格都被去除了:





