10.5. 自定义扫描规则
在使用在线扫描模式时,工具同时提供了在线web编辑器,可点击右上角的图标进入兼容性清单JSON文件的在线编辑器,如下图:
在线编辑器页面如图:
10.5.1. 新增目标库
编辑器支持新增一种目标库,点击按钮“新增目标库”弹框如下图:
说明:
新目标库名:新增目标库的名字
模板库:现有目标库的列表。本次新增的目标库将以选中的模板库的数据为基础,并清除“正则表达式”和“兼容建议”两列的数据后形成新目标库的规则数据。
10.5.2. 新增规则
点击“新增规则”按钮,会在当前列表的最下面插入一条空行,编辑该行可插入一条新的扫描规则。
10.5.3. 删除规则
点击操作列中的“删除”图标,可以移除该行的规则。
10.5.4. 单元格编辑
编辑器提供可编辑表格,双击单元格可以编辑扫描规则(注意单元格中不要有多余的空行)。
10.5.5. 生成JSON文件
点击“生成JSON文件”按钮,可触发浏览器下载新的rules.json文件。
说明:
编辑器读取的json文件就是 application.yaml 中 ruleFile 字段配置的文件。
编辑完成后点击“生成JSON文件”按钮,下载新的rules.json文件,替换原json文件即可以生效。
10.5.6. 直接修改rule.json文件的方式
想要调整规则,也可以直接修改rule.json文件的内容,层级设计如下:
{
"MySQL": {
"LightDB-MySQL": {
"DML": [
{
"desc": "[向分区]插入数据",
"syntax": "INSERT INTO t [PARTITION (partition_list)] [(col,...)] VALUES",
"originExample": "insert into person partition (p_12) (name, age, job) values ('Cart', 8, 'No');",
"regexp": "INSERT\\s+INTO\\s+(?:\\w+|\\`\\w+\\`)(?:\\.(\\w+|\\`\\w+\\`))?\\s+PARTITION\\s*\\(",
"recommend": "直接插入数据到父表,无法指定分区表",
"isSupportUnisql": "N",
"level": "阻断"
},
...
],
"DQL": [],
"DDL": [],
"FUNCTION": [],
"HINTS": [],
"VAR": [],
"FEATURE": []
},
"DM8": {},
"OB-MySQL": {},
"openGauss": {},
"TDSQL-PostgreSQL": {}
},
"Oracle": {
"LightDB-Oracle": {},
"LightDB-MySQL": {},
"LightDB-PostgreSQL": {},
"openGauss": {},
"PostgreSQL": {},
"OB-Oracle": {},
"OB-MySQL": {},
"DM8": {},
"TDMySQL8": {},
"TDMySQL57": {},
"GaussDB-Oracle": {}
}
}
第一层”MySQL”、”Oracle”,表示源数据库
第二层”LightDB-MySQL”、”DM8”、”openGauss”等等,表示以MySQL或Oracle为源数据库时,支持兼容评估的目标数据库
第三层”DML”、”DQL”、”DDL”、”FUNCTION”、”HINTS”、”VAR”、”FEATURE”表示特性的分类,其数据类型为数组
第四层是数组中的对象,每个对象元素表示一种语法特性,说明如下
“desc”:语法描述
“syntax”:语法
“originExample”:语法用例
“regexp”:正则表达式
“recommend”:兼容建议
“isSupportUnisql”:统一SQL是否支持,可选值”Y”或”N”
“level”:阻断级别,可选值”阻断”或”警告”
警告
JSON格式中,字符串内包含双引号(””)、反斜杠(\)时,需要前面加反斜杠转义。
常见的比如:
1. 正则中存在 \b
,在JSON字符串中需要填写为 \\b
2. 语法用例中存在 "Joe"
,在JSON字符串中需要填写为 \"Joe\"