一种创建数据库表模型的方法及装置的制造方法_2

文档序号:9349966阅读:来源:国知局
是不被识别和兼容的,但是hive中有数据类型“string”可以与其相对应;又例如假设源数据库为oracle,其中的数据类型“binary_double”在目标数据库hive中是不被识别和兼容的,但是hive中有数据类型“double”可以与其相对应。这样,在进行字段类型转换时,就可以将目标数据库无法识别或兼容的源表字段类型转换为可用的目标表字段类型。另外,在进行字段类型转换时,由于构建业务模型的需求,对一些目标数据库可以识别但是有包容性的字段类型也需要进行转换,以便于更好的进行数据库建模。例如,假设源数据库为oracle,其中的数据类型“smallint”目标数据库hive也可以识别和兼容,但是综合考虑包容性和存储空间等因素后,将“smallint”转换为“int”,可以使覆盖范围变大,效果更优。其实,在实际的业务场景中,源数据库系统的“smallint”经常会升级为“int”以便适应更大的数据范围。
[0032]步骤S13:由所述源表标识信息得到对应的目标表名称,并根据所述目标表名称、目标表字段名称、目标表字段类型、源表字段描述及源表描述得到目标表的建表代码。经过步骤S12的转换后,无法被目标数据库识别和兼容的数据均已可以被目标数据库所使用。之后,首先是由所述源表标识信息得到对应的目标表名称,例如通过数据拼接的方式,将源表唯一标识符、源数据库名称和源表名称拼接为目标表名称;然后将目标表名称、目标表字段名称、目标表字段类型、源表字段描述及源表描述拼接为目标表的建表代码。
[0033]步骤S14:执行所述建表代码,以生成完整的目标表模型。在目标数据库环境下执行步骤S13中已拼接封装好的建表代码,以生成完整的目标表模型。在执行过程中,如果程序执行成功,则生成完整的目标表模型;如果程序执行失败且失败信息中提示关键字报错,则先追加黑名单信息,新增字段名称映射关系后,再转换字段名称,重新拼接封装;如果为非关键字报错,则程序退出。
[0034]由以上步骤可以看出,利用源数据库数据字典信息,获取数据模型,并通过数据映射,快速实现了源数据库模型转换为目标数据库模型的过程,避免了人为调研产生的错误,且大大减少了调研及建模的时间,从而大幅提高了数据仓库的基础模型建立的效率。同时,由于调研及创建模型的程序统一,从而方便了数据库的维护与扩展。
[0035]图2是根据本发明实施例的一种创建数据库表模型的装置的主要模块示意图。如图2所示,本发明的一种创建数据库表模型的装置20主要包括解析模块21、转换模块22、封装模块23及建表模块24。
[0036]解析模块21,用于保存从源数据库的字典表中获取的创建目标表需要的源表信息,其中,所述源表信息包括:源表标识信息、源表字段名称、源表字段类型、源表字段描述及源表描述。解析模块21主要实现需求调研的功能。其中,源表标识信息可以包括:源表唯一标识符、源数据库名称及源表名称。根据不同的数据库模型的需要,在进行建表需求调研时,可制定不同的过滤规则,以从源数据库字典表中获取相应的源表信息。
[0037]转换模块22,用于对所述源表字段名称及源表字段类型进行转换,得到目标数据库能识别的目标表字段名称及目标表字段类型。
[0038]转换模块22还可以用于,根据字段名称映射规则,将目标数据库的关键字黑名单中包含的非源表关键字的源表字段名称转换为非关键字的目标表字段名称;根据字段类型关系映射表,将源表字段类型转换为目标数据库能识别且兼容的目标表字段类型。其中,所述字段类型关系映射表包括:源数据库的字段类型与目标数据库的字段类型的对应关系。
[0039]封装模块23,用于由所述源表标识信息得到对应的目标表名称,并根据所述目标表名称、目标表字段名称、目标表字段类型、源表字段描述及源表描述得到目标表的建表代码。
[0040]建表模块24,用于执行所述建表代码,以生成完整的目标表模型。
[0041]以下参考图3,再对本发明实施例的一种创建数据库表模型的装置的基本工作过程加以说明。图3是根据本发明实施例的一种创建数据库表模型的装置的系统架构图。
[0042]解析模块首先通过源数据库系统自带的API接口,读取已具备访问权的源数据库字典表,并根据设定的过滤规则例如查找源表字段名称,源表字段类型,源表字段描述,源表表描述等,过滤出所需要的源表信息,以完成需求调研的任务。然后,转换模块根据预先设定的字段名称映射规则,将目标数据库的关键字黑名单中包含的非源表关键字的源表字段名称转换为非关键字的目标表字段名称,例如可通过在字段名称前追加唯一但是可识别的字符,将非源表关键字的“exchange”转换为目标表的非关键字“v_exchange”等;根据字段类型关系映射表,将源表字段类型转换为目标数据库能识别且兼容的目标表字段类型,以便生成能被目标数据库所识别和兼容的目标表信息,例如可将源数据库mysql中的数据类型“date”映射为目标数据库hive中的数据类型“string”。另外,由于构建业务模型的需求,转换模块还可以用于对一些目标数据库可以识别但是有包容性的字段类型也需要进行转换,以便于更好的进行数据库建模。之后,封装模块可通过例如数据拼接的方式,将源表唯一标识符、源数据库名称和源表名称拼接为目标表名称,并将目标表名称、目标表字段名称、目标表字段类型、源表字段描述及源表描述拼接为目标表的建表代码,从而得到完整的目标表建表程序。最后,建表模块在目标数据库环境下执行建表代码,以生成完整的目标表模型。
[0043]从以上描述可以看出,在本发明的实施例中,利用源数据库数据字典信息,获取数据模型,并通过数据映射,快速实现了源数据库模型转换为目标数据库模型的过程,避免了人为调研产生的错误,且大大减少了调研及建模的时间,从而大幅提高了数据仓库的基础模型建立的效率。同时,由于调研及创建模型的程序统一,从而方便了数据库的维护与扩展。
[0044]上述【具体实施方式】,并不构成对本发明保护范围的限制。本领域技术人员应该明白的是,取决于设计要求和其他因素,可以发生各种各样的修改、组合、子组合和替代。任何在本发明的精神和原则之内所作的修改、等同替换和改进等,均应包含在本发明保护范围之内。
【主权项】
1.一种创建数据库表模型的方法,其特征在于,包括: 保存从源数据库的字典表中获取的创建目标表需要的源表信息,其中,所述源表信息包括:源表标识信息、源表字段名称、源表字段类型、源表字段描述及源表描述; 对所述源表字段名称及源表字段类型进行转换,得到目标数据库能识别的目标表字段名称及目标表字段类型; 由所述源表标识信息得到对应的目标表名称,并根据所述目标表名称、目标表字段名称、目标表字段类型、源表字段描述及源表描述得到目标表的建表代码; 执行所述建表代码,以生成完整的目标表模型。2.根据权利要求1所述的方法,其特征在于,所述源表标识信息包括:源表唯一标识符、源数据库名称及源表名称。3.根据权利要求1或2所述的方法,其特征在于,对所述源表字段名称及源表字段类型进行转换的步骤包括: 根据字段名称映射规则,将目标数据库的关键字黑名单中包含的非源表关键字的源表字段名称转换为非关键字的目标表字段名称; 根据字段类型关系映射表,将源表字段类型转换为目标数据库能识别且兼容的目标表字段类型。4.根据权利要求3所述的方法,其特征在于,所述字段类型关系映射表包括:源数据库的字段类型与目标数据库的字段类型的对应关系。5.一种创建数据库表模型的装置,其特征在于,包括: 解析模块,用于保存从源数据库的字典表中获取的创建目标表需要的源表信息,其中,所述源表信息包括:源表标识信息、源表字段名称、源表字段类型、源表字段描述及源表描述; 转换模块,用于对所述源表字段名称及源表字段类型进行转换,得到目标数据库能识别的目标表字段名称及目标表字段类型; 封装模块,用于由所述源表标识信息得到对应的目标表名称,并根据所述目标表名称、目标表字段名称、目标表字段类型、源表字段描述及源表描述得到目标表的建表代码; 建表模块,用于执行所述建表代码,以生成完整的目标表模型。6.根据权利要求5所述的装置,其特征在于,所述源表标识信息包括:源表唯一标识符、源数据库名称及源表名称。7.根据权利要求5或6所述的装置,其特征在于,所述转换模块还用于: 根据字段名称映射规则,将目标数据库的关键字黑名单中包含的非源表关键字的源表字段名称转换为非关键字的目标表字段名称; 根据字段类型关系映射表,将源表字段类型转换为目标数据库能识别且兼容的目标表字段类型。8.根据权利要求7所述的装置,其特征在于,所述字段类型关系映射表包括:源数据库的字段类型与目标数据库的字段类型的对应关系。
【专利摘要】本发明提供一种创建数据库表模型的方法及装置,能够大幅度缩短目标数据库创建前的需求分析、模型设计阶段,快速实现标准的数据库表模型建立,提高数据入库的效率,加速数据仓库建设。本发明的一种创建数据库表模型的方法包括:保存从源数据库的字典表中获取的创建目标表需要的源表信息;对源表字段名称及源表字段类型进行转换,得到目标数据库能识别的目标表字段名称及目标表字段类型;由源表标识信息得到对应的目标表名称,并根据目标表名称、目标表字段名称、目标表字段类型、源表字段描述及源表描述得到目标表的建表代码;执行建表代码,以生成完整的目标表模型。
【IPC分类】G06F17/30
【公开号】CN105069033
【申请号】CN201510434052
【发明人】宋增超, 张飞, 王彦明
【申请人】北京京东尚科信息技术有限公司, 北京京东世纪贸易有限公司
【公开日】2015年11月18日
【申请日】2015年7月22日
当前第2页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1