Antlr4 python 使用学习
安装及基本说明
官方网站:ANTLR
语法示例GitHub仓库:antlr/grammars-v4: Grammars written for ANTLR v4; expectation that the grammars are free of actions.
python版本:3.11 官网Python Releases for Windows | Python.org
python antlr4 使用说明:antlr4/doc/python-target.md 在 master ·ANTLR/ANTLR4 --- antlr4/doc/python-target.md at master · antlr/antlr4
简单说明用python的原因,一是不想用java,写着难受;二是这段时间用python多。主要是学习用法,之后改写各种语言也方便。
安装库:antlr4-python3-runtime
分析SQL语句的规划
- 表级数据流分析
- 识别sql语句的表名字段名称
- 能把 * 替换为元数据具体字段
- 能把表名编译到字段上去,直接替换表明 as alias 的场景
分析表的数据库记录结构
- 记录分析批次,和对象(文件,批量)
- 记录分析结果,批次、文件、sql语句、表、关系
表名 | 《分析批次表》 | |||
---|---|---|---|---|
字段 | 中文名称 | 字段类型 | 字段释义 | |
BATCH_ID | 分析批次 | varchar(200) | 处理批次ID | 主键 |
OBJ_TYPE | 对象类型 | 处理对象类型,可能有加工脚本或者接入xml等 | 主键 | |
OBJ_NM | 对象名称 | 处理对象名称,一般是脚本名 | 主键 | |
OBJ_PATH | 对象路径 | |||
BATCH_ST | 分析开始时间 | |||
BATCH_ET | 分析结束时间 | |||
时间戳 | timestamp | |||
rmrk | 备注 |
表名 | 《分析结果-SQL》 | |||
---|---|---|---|---|
字段 | 中文名称 | 字段类型 | 字段释义 | |
SQL序号ID | 主键 | |||
对象类型 | 主键 | |||
对象名称 | 主键 | |||
批次ID | 主键 | |||
SQL内容 | varchar(4000) | 单SQL语句 | ||
表名 | 《分析结果-SQL-表》 | |||
---|---|---|---|---|
字段 | 中文名称 | 字段类型 | 字段释义 | |
SQL序号ID | 主键 | |||
对象类型 | 主键 | |||
对象名称 | 主键 | |||
批次ID | 主键 | |||
表名 | 主键 | |||
表类型 | ||||
表别名 | ||||
表中文名 | ||||
SQL内容 | varchar(4000) | 单SQL语句 | ||
表名 | 《分析结果-表级关系》 | |||
---|---|---|---|---|
字段 | 中文名称 | 字段类型 | 字段释义 | |
SQL序号ID | 主键 | |||
对象类型 | 主键 | |||
对象名称 | 主键 | |||
批次ID | 主键 | |||
SQL内容 | varchar(4000) | 单SQL语句 | ||
源表名 | 主键 | |||
目标表 | ||||
关系 | ||||
关系类型 | ||||
关系ID | ||||
表名 | 《分析结果-SQL-表-字段》 | |||
---|---|---|---|---|
字段 | 中文名称 | 字段类型 | 字段释义 | |
SQL序号ID | 主键 | |||
对象类型 | 主键 | |||
对象名称 | 主键 | |||
批次ID | 主键 | |||
表名 | 主键 | |||
表类型 | ||||
表别名 | ||||
SQL内容 | varchar(4000) | 单SQL语句 | ||
字段名 | 主键 | |||
字段类型 | ||||
字段中文名 | ||||
表名 | 《分析结果-字段级关系》 | |||
---|---|---|---|---|
字段 | 中文名称 | 字段类型 | 字段释义 | |
SQL序号ID | 主键 | |||
对象类型 | 主键 | |||
对象名称 | 主键 | |||
批次ID | 主键 | |||
SQL内容 | varchar(4000) | 单SQL语句 | ||
源表名 | ||||
目标表 | ||||
表级关系 | ||||
备注 | ||||
源字段名 | ||||
目标字段名 | ||||
字段关系 | ||||
字段处理源代码 | ||||
字段关系类型 | 直取/映射/函数加工 | |||
ID |