首批通过分布式安全可靠测评,为关键业务系统打造
定义控制文件
更新时间:2026-04-13 14:00:52
OBDUMPER 可通过预定义的控制文件对导出的数据进行预处理。
文件模板
控制文件的定义模版如下:
lang=java
(
列名 "预处理函数",
列名 "预处理函数",
列名 "预处理函数"
);
注意
- 控制文件的命名规范为 <表名>.ctrl。
- 预处理函数定义请参考 预处理函数。
注意事项
如果表中定义的列名包含了数据库关键字,需要在列名前后添加反引号(`)进行转义。示例如下:
lang=java
(
`WHEN` "lower(`WHEN`)",
c2 "nanvl(c2,'0')"
);
示例
导出 --cut 格式的数据。示例如下:
lang=java
(
c1 "lower(c1)", -- c1 列的值中的字母转换为小写
c2 "ltrim(c2)", -- c2 列的值从左开始截断空格
c3 "rtrim(c3)", -- c3 列的值从右开始截断空格
c4 "substr(c4,0,5)", -- c4 列的值第 1 位置截取 5 个字符长度的字符串
c5 "trim(c5)", -- c5 列的值左右两侧截断空格
c6 "upper(c6)", -- c6 列的值中的字母转换为大写
c7 "nanvl(c7,'0')", -- c7 列的值进行数值验证,非数值则返回 0
c8 "replace(c8,'a','A')", -- c8 列的值中的 a 替换为 A
c9 "nvl(c9,'nill')", -- c9 列的值进行判空,若为 null 返回 nill 字符串
c10 "to_timestamp(c10,'yyyyMMddHHmmssSSS')", -- c10 列的值进行格式化,若格式失败则返回 null,否则返回 yyyy-MM-dd HH:mm:ss.SSS
c11 "length(c11)", -- c11 列的值进行长度计算
c12 "lpad(c12,5,'x')", -- c12 列的值左侧追加 5 个字节长度字符串 'x'
c13 "rpad(c13,5,'x')", -- c13 列的值右侧追加 5 个字节长度字符串 'x'
c14 "convert(c14,'utf-8','gbk')", -- c14 列的值从 gbk 转换为 utf-8 字符编码
c15 "concat(c15, '_suffix')", -- c15 列的值与常量进行拼接
c16 "none", -- c16 列的值不作任何处理,直接返回对应列的值
c17 "systimestamp", -- c17 列的值不作任何处理,直接返回当前集群的时间戳
c18 "constant('1')", -- c18 列的值不作任何处理,仅返回常量 1
c19 "tmsfmt(c19,'yyyyMMddHHmmssSSS','20210310000000000','yyyyMMddHHmmssSSS')", -- c19 列的值进行日期验证,验证失败返回默认值
c20 "lpadb(c20,5,'x')", -- c20 列的值左侧追加 5 个字节长度的(单)字符 'x'
c21 "rpadb(c21,5,'x')", -- c21 列的值右侧追加 5 个字节长度的(单)字符 'x'
c22 "case when length(trim(c22))<18 then 'Y' else 'N' end", -- c22 列的值进行条件真值匹配,若为真返回对应列的值
c23 "case length(trim(c23)) when '1' then 'one' when '2' then 'two' else 'unknown' end", -- c23 列的值进行条件等值匹配,若匹配成功返回对应列的值
c24 "sysdate", -- c24 列的值为当前日期
c25 "sequence(100,1)" -- c25 列的值对指定的列生成递增的序列值(100 代表初始值,1 代表递增值)
c26 "reverse(c26)", -- c26 列的值进行顺序颠倒
c27 "mask("c27",'A','a','b')", -- c27 列的大写字母转换为字母 A,小写字母转换为 a,数字转换为 b
c28 "mask_first_n(c28,'A','a','b',5)", -- c28 列的前 5 个字符中的大写字母转换为字母 A,小写字母转化为 a,数字转换为 b
c29 "mask_last_n(c29,'A','a','b',5)", -- c29 列的后 5 个字符中的大写字母转换为字母 A,小写字母转化为 a,数字转换为 b
c30 "mask_show_first_n(c30,'A','a','b',5)", -- c30 列除前 5 个字符之外的所有字符中的大写字母转换为字母 A,小写字母转化为 a,数字转换为 b
c31 "mask_show_last_n(c31,'A','a','b',5)" -- c31 列除后 5 个字符之外的所有字符中的大写字母转换为字母 A,小写字母转化为 a,数字转换为 b
)
说明
具体请参考 预处理函数 中的函数列表。