SymmetricDS Transform

字段映射部分及自定义规则部分:

transform_table:

  • transform_id、source_table_name、source_node_group_id、target_node_group_id、

  • transform_point(EXTRACT、LOAD)、

  • column_policy
    (SPECIFIED只有被定义的参与变更的列才会作为变更的一部分、
    IMPLIED如果没有明确指定,则会源端列会被同步到目标端
    NONE删除操作不会对目标端有影响)

  • update_first
    这个选项会覆盖插入操作的默认行为,symDS会先执行更新操作,如若更新失败,会执行插入操作

  • delete_action

    (DEL_ROW 删除操作、UPDATE_COL、删除操作会使目标端更新操作、NONE 目标端不会变化)

  • update_action

    (UPD_ROW 正常的更新操作、INS_ROW更新操作->插入操作、DEL_ROW 更新操作->删除操作、NONE nothing done)

  • 一些transfrom 使用样例

     1.从一张源表复制一列同步到多表的列上
     2.合并多个源表的列成为目标表的一行
     3.依靠源数据同步,在目标表里插入列的约束
     4.依据源表的变动情况,将多行数据插入到一张目标表中。
     5.当加载到目标库时可应用bean shell脚本来实现自定义转变
    

transform_column

  • pk

    无所谓是不是目标表的主键,是用来辨识目标行的。
    被用来定义where从句当更新还有删除操作发生在目标的时候。
    Unless the column policy is “IMPLIED” at least one row marked as a pk
    should be present for each transform_id.
    source_column_name、target_column_name、

  • include_on
    (I、U、D、*)应用于哪种操作,插入、更新、删除、所有

  • transform_type

    实现IColumnTransform接口可以自行定义变更类型

  • 现有类型如下:

  1. copy default: 将源列值复制到目标列

  2. remove :exclude the source column,仅限用于column_policy为IMPLIED

  3. const:将常量给目标列赋值

  4. variable:将动态变量给目标列赋值

  5. additive:数值的计算

  6. substring:源数据的substring给目标列赋值

  7. Left 、BLeft 、Multiply

  8. lookup:可使用查询语句(可查其他表),不过查询必须仅返回一行、并且首列作为同步值

  9. bsh: BeanShell Script,在转变表达式中支持bsh脚本。它可以返回String or an instance of
    NewAndOldValue 有很多变量以及函数可以使用。

  10. identity、

  11. math:简单科学计算可以使用(源列数据,更新前数据、现数据)

  12. copyIfChanged:这个外部配置就行了吧
    trigger.update.capture.changed.data.only.enabled 默认是false
    可以设置为true;多了个配置就是列的值一致,忽略该列还可以忽略该行。

  13. valueMap: 映射值
    Clarion Date Time、Columns To Rows、isEmpty、isBlank、Null Value、Deleted Columns

DEMO:

insert into sym_transform_table values ('tftype', 'corp', 'store', 'LOAD', null, null, 'jsy', null, null, 'jsytemp', 
0, 'UPD_ROW', 'DEL_ROW', 1, 'IMPLIED', current_timestamp, 'yuye', current_timestamp, 'type map');
insert into sym_transform_column values ('tftype', '*', 'nian', 'age', 0, 'copy', '', 1, CURRENT_TIMESTAMP, 'dota', CURRENT_TIMESTAMP, 'type map');
insert into sym_transform_column values ('tftype', '*', 'mingzi', 'name', 0, 'copy', '', 1, CURRENT_TIMESTAMP, 'dota', CURRENT_TIMESTAMP, 'type map');

猜你喜欢

转载自blog.csdn.net/qq_19335345/article/details/84578172