一种映射关系生成方法及装置制造方法及图纸

技术编号:21913960 阅读:38 留言:0更新日期:2019-08-21 12:25
本发明专利技术公开了一种映射关系生成方法及装置,以解决现有技术中生成的映射关系准确性较低的问题。该方法包括:对结构化查询语言SQL程序进行语法分析,构建所述SQL程序的抽象语法树AST;递归遍历所述AST,获取每次递归得到的SQL元素的信息,所述SQL元素的信息至少包括表名和字段名;根据获取到的SQL元素的信息建立并保存第一集合;其中,所述第一集合中的第i个键值对用于保存第j次递归得到的SQL元素的信息,所述第i个键值对中的键至少包括所述第j次递归得到的表名,所述第i个键值对中的值至少包括所述第j次递归得到的字段名,i=1,2,…N,j=1,2,…N,N为递归次数;根据所述第一集合生成映射关系。

A Method and Device for Generating Mapping Relations

【技术实现步骤摘要】
一种映射关系生成方法及装置
本专利技术涉及计算机及数据库领域,尤其涉及一种映射关系生成方法及装置。
技术介绍
数据抽取、转换、装载(Extract-Transform-Load,ETL)技术作数据仓库(DataWarehouse,DW)的核心和灵魂,负责数据从数据源向目标数据仓库转化的过程,即从数据源抽取出所需的数据,经过数据清洗,最终按照预先定义好的数据仓库模型,将数据加载到数据仓库中去,其中,DW用于对企业的联机事务处理(On-LineTransactionProcessing,OLTP)系统产生的数据进行整合,发掘其中的商业价值,为企业提供决策支持。在以结构化查询语言(StructuredQueryLanguage,SQL)脚本为主的ETL技术中,需要对SQL程序进行解析以提取SQL语法书中SQL元素,根据提取到的SQL元素生成表级映射关系以及字段级映射关系。现有技术中,通过对SQL程序解析后得到的SQL元素按照出现顺序编号,根据SQL元素的编号以及相应规则生成表级映射关系以及字段级映射关系,SQL元素编号的正确性直接影响映射关系的正确性。因此,根据SQL基础元素对象的编号以及相应规则生成表级映射关系以及字段级映射关系,容易导致映射关系出错,尤其针对复杂的SQL程序。以连接查询为例,假设表A由表B与表C连接生成,即[B,C]→A,在抽象语法树(AbstractSyntaxTree,AST)中,表B与表C的顺序为先得到表B,然后得到表C,即B→C→A,使得表B与表C的编号不一样,进而导致根据表B与表C的编号生成的映射关系发生错误。
技术实现思路
本专利技术实施例提供一种映射关系生成方法及装置,以解决现有技术中根据SQL元素的编号生成映射关系准确性较低的问题。本专利技术实施例提供的具体技术方案如下:第一方面,本专利技术实施例提供了一种映射关系生成方法,包括:对结构化查询语言SQL程序进行语法分析,构建所述SQL程序的抽象语法树AST;递归遍历所述AST,获取每次递归得到的SQL元素的信息,所述SQL元素的信息至少包括表名和字段名;根据获取到的SQL元素的信息建立并保存第一集合;其中,所述第一集合中的第i个键值对用于保存第j次递归得到的SQL元素的信息,所述第i个键值对中的键至少包括所述第j次递归得到的表名,所述第i个键值对中的值至少包括所述第j次递归得到的字段名,i=1,2,…N,j=1,2,…N,N为递归次数,i、j、N为正整数;根据所述第一集合生成映射关系。可选地,若所述第j次递归得到的SQL元素的信息还包括子查询名、表别名和/或字段别名,则所述第i个键值对中的键还包括所述第j次递归得到的子查询名和/或表别名,所述第i个键值对中的值还包括所述第j次递归得到的表别名和/或字段别名。可选地,当所述映射关系为表级映射关系时,根据所述第一集合生成映射关系,包括:解析所述第i个键值对中的键,若所述第i个键值对的键中包括子查询名或第一表名,则将所述第i个键值对的键中包括的子查询名或第一表名确定为第二集合的键,否则将所述第i个键值对的键中第二表名确定为第二集合的键;其中,所述第一表名为所述SQL程序中创建的表的表名,所述第二表名为所述SQL程序中包括的除所述第一表名外的表名,所述第二集合用于保存所述表级映射关系;解析所述第i个键值对中的值,当所述第i个键值对的值中包括表别名时,根据所述第i个键值对的值中包括的表别名查询第三集合,若查到所述第i个键值对的值中包括的表别名对应的表名,则将所述第i个键值对的值中包括的表别名对应的表名确定为所述第二集合的键对应的值,否则将所述第i个键值对的值中包括的表别名确定为所述第二集合的键对应的值,其中,所述第三集合用于保存所述SQL程序中表名与表别名的对应关系;当所述第i个键值对中的值中不包括表别名时,将所述第i个键值对的键中包括的第二表名确定为所述第二集合的键对应的值。可选地,当所述映射关系为表级映射关系时,根据所述第一集合生成映射关系,包括:解析所述第i个键值对中的键,若所述第i个键值对的键中包括子查询名或第一表名,则将所述第i个键值对的键中包括的子查询名或第一表名确定为第二集合的键,否则将所述第i个键值对的键中包括的第二表名确定为第二集合的键,所述第一表名为所述SQL程序中所创建的表的表名,所述第二表名为所述SQL程序中除所述第一表名外的表名,所述第二集合用于保存所述表级映射关系;若所述第i个键值对的键中包括第一表名,则解析所述第i个键值对中的值,当所述第i个键值对的值中包括表别名时,根据所述第i个键值对的值中包括的表别名查询第三集合,若查到所述第i个键值对的值中包括的表别名对应的表名,则将所述第i个键值对的值中包括的表别名对应的表名确定为所述第二集合的键对应的值,否则将所述第i个键值对的值中包括的表别名确定为所述第二集合的键对应的值,其中,所述第三集合用于保存所述SQL程序中表名与表别名的对应关系;当所述第i个键值对中的键中不包括第一表名时,将所述第i个键值对的键中包括的第二表名确定为所述第二集合的键对应的值。可选地,当所述映射关系为字段级映射关系时,根据所述第一集合生成映射关系,包括:解析所述第i个键值对,当所述第i个键值对的值中包括表/别名时,根据所述第i个键值对的值中包括的表别名查询第三集合,若查找到所述第i个键值对的值中包括的表别名对应的表名,将所述第i个键值对的值中包括的表别名对应的表名确定为源子查询名/表名,否则,将所述第i个键值对的值中包括的表别名确定为源查子询名/表名;当所述第i个键值对的值中不包括表别名时,将所述第i个键值对的键中包括的第二表名确定为源子查询名/表名,其中,所述第二表名为所述SQL程序中除第一表名外的表名,所述第一表名为所述SQL程序中所创建的表的表名;若所述第i个键值对中的键包括子查询名或第一表名,则将所述第i个键值对的键中包括的子查询名或第一表名确定为所述源子查询名/表名对应的目标子查询名/表名,否则,将所述第i个键值对的键中包括的第二表名确定为目标子查询名/表名,所述第一表名为所述SQL程序中创建的表的表名;将所述第i个键值对的值中包括的字段名确定为源字段名;若所述第i个键值对的值中包括字段别名,则将所述第i个键值对的值中包括的字段别名确定为所述源字段名对应的目标字段名,否则,将所述第i个键值对的值中包括的字段名确定为所述源字段名对应的目标字段名;根据所述目标子查询名/表名、所述目标字段名、所述源子查询名/表名以及所述源字段名,生成字段级映射关系。可选地,根据所述第i个键值对的值中包括的表别名查询第三集合之前,还包括:解析所述第i个键值对的键,若所述第i个键值对的键包括表别名,则将所述第i个键值对的键中包括的表别名确定为所述第三集合中的键,否则将所述第i个键值对的键中包括的第二表名确定为所述第三集合中的键;将所述第i个键值对的键中包括的第二表名确定为所述第三集合中的键对应的值,得到所述第三集合。可选地,所述第i个键值对中的键包括第一字段、第二字段和第三字段,所述第一字段用于保存子查询名或第一表名,所述第二字段用于保存第二表名,所述第三字段用于保存表别名;所述第i个键值对的值中任意一个元素包括第四字段、第五字段和第六字段,所述第四字段用于本文档来自技高网...

【技术保护点】
1.一种映射关系生成方法,其特征在于,包括:对结构化查询语言SQL程序进行语法分析,构建所述SQL程序的抽象语法树AST;递归遍历所述AST,获取每次递归得到的SQL元素的信息,所述SQL元素的信息至少包括表名和字段名;根据获取到的SQL元素的信息建立并保存第一集合;其中,所述第一集合中的第i个键值对用于保存第j次递归得到的SQL元素的信息,所述第i个键值对中的键至少包括所述第j次递归得到的表名,所述第i个键值对中的值至少包括所述第j次递归得到的字段名,i=1,2,…N,j=1,2,…N,N为递归次数,i、j、N为正整数;根据所述第一集合生成映射关系。

【技术特征摘要】
1.一种映射关系生成方法,其特征在于,包括:对结构化查询语言SQL程序进行语法分析,构建所述SQL程序的抽象语法树AST;递归遍历所述AST,获取每次递归得到的SQL元素的信息,所述SQL元素的信息至少包括表名和字段名;根据获取到的SQL元素的信息建立并保存第一集合;其中,所述第一集合中的第i个键值对用于保存第j次递归得到的SQL元素的信息,所述第i个键值对中的键至少包括所述第j次递归得到的表名,所述第i个键值对中的值至少包括所述第j次递归得到的字段名,i=1,2,…N,j=1,2,…N,N为递归次数,i、j、N为正整数;根据所述第一集合生成映射关系。2.如权利要求1所述的方法,其特征在于,若所述第j次递归得到的SQL元素的信息还包括子查询名、表别名和/或字段别名,则所述第i个键值对中的键还包括所述第j次递归得到的子查询名和/或表别名,所述第i个键值对中的值还包括所述第j次递归得到的表别名和/或字段别名。3.如权利要求2所述的方法,其特征在于,当所述映射关系为表级映射关系时,根据所述第一集合生成映射关系,包括:解析所述第i个键值对中的键,若所述第i个键值对的键中包括子查询名或第一表名,则将所述第i个键值对的键中包括的子查询名或第一表名确定为第二集合的键,否则将所述第i个键值对的键中第二表名确定为第二集合的键;其中,所述第一表名为所述SQL程序中创建的表的表名,所述第二表名为所述SQL程序中包括的除所述第一表名外的表名,所述第二集合用于保存所述表级映射关系;解析所述第i个键值对中的值,当所述第i个键值对的值中包括表别名时,根据所述第i个键值对的值中包括的表别名查询第三集合,若查到所述第i个键值对的值中包括的表别名对应的表名,则将所述第i个键值对的值中包括的表别名对应的表名确定为所述第二集合的键对应的值,否则将所述第i个键值对的值中包括的表别名确定为所述第二集合的键对应的值,其中,所述第三集合用于保存所述SQL程序中表名与表别名的对应关系;当所述第i个键值对中的值中不包括表别名时,将所述第i个键值对的键中包括的第二表名确定为所述第二集合的键对应的值。4.如权利要求2所述的方法,其特征在于,当所述映射关系为表级映射关系时,根据所述第一集合生成映射关系,包括:解析所述第i个键值对中的键,若所述第i个键值对的键中包括子查询名或第一表名,则将所述第i个键值对的键中包括的子查询名或第一表名确定为第二集合的键,否则将所述第i个键值对的键中包括的第二表名确定为第二集合的键,所述第一表名为所述SQL程序中所创建的表的表名,所述第二表名为所述SQL程序中除所述第一表名外的表名,所述第二集合用于保存所述表级映射关系;若所述第i个键值对的键中包括第一表名,则解析所述第i个键值对中的值,当所述第i个键值对的值中包括表别名时,根据所述第i个键值对的值中包括的表别名查询第三集合,若查到所述第i个键值对的值中包括的表别名对应的表名,则将所述第i个键值对的值中包括的表别名对应的表名确定为所述第二集合的键对应的值,否则将所述第i个键值对的值中包括的表别名确定为所述第二集合的键对应的值,其中,所述第三集合用于保存所述SQL程序中表名与表别名的对应关系;当所述第i个键值对中的键中不包括第一表名时,将所述第i个键值对的键中包括的第二表名确定为所述第二集合的键对应的值。5.如权利要求2所述的方法,其特征在于,当所述映射关系为字段级映射关系时,根据所述第一集合生成映射关系,包括:解析所述第i个键值对,当所述第i个键值对的值中包括表别名时,根据所述第i个键值对的值中包括的表别名查询第三集合,若查找到所述第i个键值对的值中包括的表别名对应的表名,将所述第i个键值对的值中包括的表别名对应的表名确定为源子查询名/表名,否则,将所述第i个键值对的值中包括的表别名确定为源查子询名/表名;当所述第i个键值对的值中不包括表别名时,将所述第i个键值对的键中包括的第二表名确定为源子查询名/表名,其中,所述第二表名为所述SQL程序中除第一表名外的表名,所述第一表名为所述SQL程序中所创建的表的表名;若所述第i个键值对中的键包括子查询名或第一表名,则将所述第i个键值对的键中包括的子查询名或第一表名确定为所述源子查询名/表名对应的目标子查询名/表名,否则,将所述第i个键值对的键中包括的第二表名确定为目标子查询名/表名;将所述第i个键值对的值中包括的字段名确定为源字段名;若所述第i个键值对的值中包括字段别名,则将所述第i个键值对的值中包括的字段别名确定为所述源字段名对应的目标字段名,否则,将所述第i个键值对的值中包括的字段名确定为所述源字段名对应的目标字段名;根据所述目标子查询名/表名、所述目标字段名、所述源子查询名/表名以及所述源字段名,生成字段级映射关系。6.如权利要求3-5任意一项所述的方法,其特征在于,根据所述第i个键值对的值中包括的表别名查询第三集合之前,还包括:解析所述第i个键值对的键,若所述第i个键值对的键包括表别名,则将所述第i个键值对的键中包括的表别名确定为所述第三集合中的键,否则将所述第i个键值对的键中包括的第二表名确定为所述第三集合中的键;将所述第i个键值对的键中包括的第二表名确定为所述第三集合中的键对应的值,得到所述第三集合。7.如权利要求1-5任意一项所述的方法,其特征在于,所述第i个键值对中的键包括第一字段、第二字段和第三字段,所述第一字段用于保存子查询名或第一表名,所述第二字段用于保存第二表名,所述第三字段用于保存表别名,所述第二表名为所述SQL程序中除所述第一表名外的表名;所述第i个键值对的值中任意一个元素包括第四字段、第五字段和第六字段,所述第四字段...

【专利技术属性】
技术研发人员:朱刘江
申请(专利权)人:中移苏州软件技术有限公司中国移动通信集团公司
类型:发明
国别省市:江苏,32

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1