暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

电科金仓KFS支持对字符串中空格进行处理功能介绍与配置使用说明

原创 KFS补给站 2024-11-05
217

关键字:

金仓数据库、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   ');

源端数据库的中数据如下所示:
图片.png
查看目标端的数据,MYTEST.TEST1表C1列字符串的右边的空格都被去除了:
图片.png

5) 在源端数据库执行以下操作:

insert into  MYTEST.TEST2 values (1,'   ceshi002   ');
insert into  MYTEST.TEST2 values (2,'   ceshi002   ');
insert into  MYTEST.TEST2 values (3,'   ceshi002   ');

源端数据库的中数据如下所示:
图片.png
查看目标端的数据,MYTEST.TEST2表C1列字符串的左边的空格都被去除了:
图片.png
6) 在源端数据库执行以下操作:

insert into  MYTEST.TEST3 values (1,'   ceshi003   ');
insert into  MYTEST.TEST3 values (2,'   ceshi003   ');
insert into  MYTEST.TEST3 values (3,'   ceshi003   ');

源端数据库的中数据如下所示:
图片.png
查看目标端的数据,MYTEST.TEST1表C1列字符串的左右两边的空格都被去除了:
图片.png

「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论