GoldenGate中字段的映射一般配置在复制应用端的MAP参数中,字段映射要求两边尽量一致的字段的类型,当然也允许CHAR<->VARCHAR之类的转换。对于不同字段类型的映射,最好详细参考GoldenGate官方文档以得到足够的支持信息,并做好测试验证以防止数据丢失等。以下是字段映射的配置例子:
例子1:
/***
MAP ddw.a1test, target ddw.a2test, --target前一定要留个空格,否则会报错
COLMAP (id = id, type1 = type1, sell_date1 = sell_date2); --字段映射配置
***/
例子2:
/***
MAP ddw.a1test, target ddw.a2test,
COLMAP (USEDEFAULTS, sell_date1 = sell_date2); --USEDEFAULTS表示自动映射同名字段
MAP ddw.a3test, target ddw.a4test; --不同的表映射,不同的map
MAP “ddw.a5test”, target “ddw.a6test”; --在有些大小写敏感的数据源需要引号区分大小写
***/
例子3:
/***
MAP ddw.a1test, target ddw.a2test,
COLMAP (USEDEFAULTS, num = 111, name = "abc", now_date = @DATENOW()); --字段指定固定值,注意字符值加引号,数字值不可加引号;@DATENOW()表示当前系统时间
***/
例子4:
/***
MAP ddw.a1test, target ddw.a2test,
COLMAP (USEDEFAULTS,
transaction_date = @DATE (“YYYY-MM-DD”, “YY”, YEAR, “MM”, MONTH,“DD”, DAY),); --多个字符字段整合转换为目标端的一个时间字段
***/
在这里顺便插入一个很容易出错的表映射例子:
/***
map ddw.a*, target ddw.*; --通配符表示所有a开头的表进行映射,注意的是target后面的表名千万不能也写成ddw.a*,不然会被映射成目标端aa开头的表
***/