第一步:对sql进行建模
1、经过对抽取数据的sql进行观察和通用化建模,发现规律如下:
Sql格式: insert into 结果表 select …..
Select 后面只有三种种情况①from元表表名②leftjoin(链接) 表名或者(select语句) 元表名③union all (select语句),如下图:
第二步:对sql进行解析
1、 sql格式要求:
符合抽取数据格式的sql,在一个文件中每一条sql之间用分号分隔。
2、 进行文件处理
先将一个文件切成单独的sql文本,并且用结果表命名如下图:
3、 然后将每一个文件转换成一个含有源表的对象如下图建模对象:
其中,将文件中没有的源表转成空对象(将所有表都转成一个对象)。
4、 解析关键词into、from、join,再进行一些细节处理和剔除,获得每一条sql中的所有表名,转换成对象。
5、 利用队列的数据结构和特性,将已经得到的对象转换成新的对象(三合一数据结构),如下图:
6、 选择任何一个对象,即可以找出相关的所有关系。
第三步:将关系输出到文件中或者展示在界面上
1、还没有更好的方法实现,仍在思考当中。