适用于多种目的表更新方式的通用etl方法

文档序号:9471363阅读:735来源:国知局
适用于多种目的表更新方式的通用etl方法
【技术领域】
[0001] 本发明涉及一种数据库更新存储的ETL方法,具体涉及一种适用于多种目的表更 新方式的通用ETL方法。
【背景技术】
[0002] ETL是Extract-Transform-Load的缩写,即数据抽取、转换和装载的过程,也可以 理解为数据提取、转化和加载的过程,ETL作为数据仓库和商务智能的核心和灵魂,能够按 照统一的规则集成并提高数据的价值,是负责完成数据从数据源向目标数据仓库转化的过 程,是实施数据仓库的重要步骤。
[0003]目前的ETL方法分为两大类:ETL工具软件类和数据库脚本类。
[0004] 所谓ETL工具软件类,是指除数据仓库本身所用到的数据库软件以外,再安装一 套ETL工具软件,ETL软件既可以装在数据仓库服务器上,也可以装在单独的ETL服务器上。 ETL软件通过统一的接口连接数据源和目标数据仓库,并通过多个配置文件和任务计划实 现多个ETL过程。
[0005] 所谓数据库脚本类,是指利用数据仓库本身的数据库软件的远程数据库连接、表、 视图、存储过程、作业等功能,通过编写和运行数据库脚本来实现ETL过程,不用再安装另 外的ETL工具软件。
[0006]ETL工具软件的缺点在于:
[0007] (1)成本高,需要另外购买ETL软件,需要招聘能掌握ETL软件的人才,且需要维护 ETL软件的正常运行。
[0008] (2)速度慢,ETL软件不管访问何种数据库,都采用标准的数据接口,而不同的数 据库有自己的非标准的、高速的数据接口。因此ETL软件的ETL速度比经过优化的数据库 脚本速度要慢。
[0009] (3)故障多,ETL软件方式因为涉及到两套软件,因而架构较复杂,节点较多,其中 任一节点出问题,都会导致ETL过程失败。而数据库脚本方式的架构简单,故障少。
[0010] ⑷实施工作量大,ETL软件采用图形化的配置方式,无法批量复制,必须逐表、逐 字段的手工配置,而ETL所涉及的表和字段往往很多。而数据库脚本通过编程实现,它可以 用传递参数和循环遍历的方法压缩工作量。
[0011] 当然,现有的数据库脚本也存在问题,如:
[0012] (1)不通用,数据库开发人员往往会根据不同的项目编写不同的数据库脚本,一个 项目上的数据库脚本不能完全移植到别的项目上,这就会导致重复的开发工作。
[0013] (2)不能实现多种目的表更新方式,数据仓库中的目的表可以有多种更新方式,不 同的目的表适用于不同的更新方式,数据库脚本难以囊括多种目的表更新方式。
[0014] 由于上述原因,本发明人对现有的数据库脚本的ETL方法进行了深入研究,以便 开发出解决上述问题的ETL方法。

【发明内容】

[0015] 为了克服上述问题,本发明人进行了锐意研究,设计出一种适用于多种目的表更 新方式的通用ETL方法,该方法既避免了ETL工具软件所存在的成本高、速度慢、故障多、 实施工作量大的缺点,又克服了现有数据库脚本所存在的不通用、不能实现多种表更新方 式的问题,该方法的核心是设置ETL过程的四个位于目标数据仓库的数据库对象,四个数 据库对象是:ETL任务表、ETL日志表、存储过程模块和索引和备注信息存储过程亚模块,其 中,ETL任务表用于记录数据仓库中的各个ETL任务;ETL日志表用于记录ETL存储过程运 行时产生的日志,存储过程模块用于执行某个作业信息模块所包含的ETL任务,索引和备 注信息存储过程亚模块用于把目的表的索引和备注复制到影子表,设置上述四个数据库对 象,调整其顺序,再设置数据库连接、作业等必须程序,从而完成抽取源表数据进行转化并 最终将数据存储至目标数据仓库的ETL过程,从而完成本发明。
[0016] 具体来说,本发明的目的在于提供以下方面:
[0017] (1)-种适用于多种目的表更新方式的通用ETL方法,其特征在于,该方法包括如 下步骤:
[0018] 步骤1 :在目标数据仓库中建立数据库连接,数据库连接用于访问源表;
[0019] 步骤2 :在目标数据仓库中建立空白目的表;
[0020] 步骤3:在目标数据仓库中建立转化视图,所述转化视图的数据结构与目的表的 数据结构一致;
[0021] 步骤4:在目标数据仓库中建立ETL任务表和ETL日志表,其中,ETL任务表用于 记录ETL任务的内容,ETL任务表至少包括更新方式栏、作业名称栏、更新序号栏、更新状态 栏,ETL日志表用于记录ETL存储过程在运行时产生的日志信息;
[0022] 步骤5 :在目标数据仓库中输入存储过程信息模块,所述存储过程信息模块包括 存储过程模块和索引和备注信息存储过程亚模块,其中,存储过程模块用于执行作业信息 模块所包含的ETL任务;
[0023] 步骤6 :在ETL任务表中输入ETL任务信息,所述输入的ETL任务信息至少包括从 源表到目的表的更新方式和作业信息模块名称;
[0024] 步骤7 :在目标数据仓库中输入作业信息模块,每个作业信息模块中都包括一个 以上ETL任务,所述作业信息模块用于在预定的时间通过向接收子模块发送参数的方式来 调用存储过程模块;
[0025] 其中,存储过程模块包括:
[0026] 接收子模块,其用于接收作业信息模块发出的参数信息,并通知统计子模块查找 并记录该作业信息模块中包含的所有ETL任务,同时,通知ETL日志表记录开始日志;
[0027] 统计子模块,其用于查找并记录作业信息模块包含的所有ETL任务,将各个ETL任 务按照更新序号排序,其中,当统计子模块开始查找并记录ETL任务时,通知ETL任务表将 其中的更新状态栏改为等待执行;
[0028] 更新方式选择子模块,其用于查询在ETL任务表中预设的从源表到目的表的ETL 任务的更新方式,并根据预设的从源表到目的表的更新方式通知相应的更新子模块对目的 表进行更新,同时通知ETL任务表将其中的更新状态栏改为正在执行;
[0029] 全表数据替换更新子模块,其用于在预设的从源表到目的表的更新方式为全表数 据替换时对目的表进行更新,其对目的表的更新过程包括如下步骤:根据源表创建目的表 的影子表,所述影子表中只有数据;删除目的表;把影子表重命名为目的表;
[0030] 全表数据替换并重建索引子模块,其用于在预设的从源表到目的表的更新方式为 全表数据替换并重建索引时对目的表进行更新,其对目的表的更新过程包括如下步骤:根 据源表创建目的表的影子表,所述影子表中只有数据;调用用于把目的表中的索引信息和 备注信息复制到影子表的索引和备注信息存储过程亚模块,通过索引和备注信息存储过程 亚模块把目的表的索引信息和备注信息复制到影子表;删除目的表;把影子表重命名为目 的表;
[0031] 差异添加子模块,其用于在预设的从源表到目的表的更新方式为差异添加时对目 的表进行更新,其对目的表的更新过程包括如下步骤:向目的表中插入源表中有而目的表 中没有的数据;
[0032] 时间修改添加或字符串修改添加子模块,其用于在预设的从源表到目的表的更新 方式为时间修改添加或字符串修改添加时对目的表进行更新,其对目的表的更新过程包括 如下步骤:删除目的表中数据更新时间与源表中数据更新时间不一致的所有数据;向目的 表中插入源表中有而目的表中没有的数据;
[0033] 时间添加子模块,其用于在预设的从源表到目的表的更新方式为时间添加时对目 的表进行更新,其对目的表的更新过程包括如下步骤:分别计算源表和目的表最大添加时 间;把源表中数据添加时间介于上述两个时间点之间的数据添加到目的表中;
[0034]和
[0035] 循环处理子模块,其用于在更新模块更新结束后通知ETL任务表将其中的更新状 态栏改为已完成,并记录ETL任务结束时间和新增数据条数;进行循环处理过程,即通知更 新方式选择子模块处理下一个ETL任务,直至作业信息模块所包含的所有ETL任务都执行 完毕,当作业信息模块所包含的所有ETL任务都执行完毕后,存储过程模块运行结束,通知 ETL日志表记录结束日志。
[0036] (2)根据上述(1)所述的适用于多种目的表更新方式的通用ETL方法,其特征在 于,该方法的步骤2为:在目标数据仓库中建立空白目的表,在所述目的表中添加索引栏和 备注栏,或调用已有目的表。
[0037] (3)根据上述(1)所述的适用于多种目的表更新方式的通用ETL方法,其特征在 于,转化视图用于把源表的数据结构转化为目的表的数据结构。
[0038] (4)根据上述(1)所述的适用于多种目的表更新方式的通用ETL方法,其特征在 于,ETL任务表包括:
[0039]目的表栏,其用于记录ETL任务中目标数据仓库的表名;
[0040] 源表栏,其用于记录ETL任务中源表的表名;
[0041] 更新方式栏,其用于记录ETL任务中从源表到目的表的更新方式;
[0042] 作业名称栏,其用于记录该ETL任务所属的作业信息模块名称;
[0043] 更新序号栏,其用于记录该ETL任务在所属作业信息模块中的序号;
[0044] 更新状态栏,其用于记录该ETL任务当前的执行状态,ETL任务的执行状态包括: 编辑、等待执行、正在执行、报错退出和已完成;
[0045] 主键名栏,其用于记录ETL任务中源表和目的表的主键名;
[0046]和
[0047] 增量字段名栏,其用于记录ETL任务中源表和目的表的更新时间字段名或添加时 间字段名。
[0048] (5)根据上述(4)所述的适用于多种目的表更新方式的通用ETL方法,其特征在 于,从源表到目的表的更新方式包括:手工更新、全表数据替换、全表数据替换并重建索引、 差异添加、时间修改添加、字符串修改添加和时间添加。
[0049] (6)根据上述(1)所述的适用于多种目的表更新方式的通用ETL方法,其特征在 于,ETL日志表包括:
[0050] 序号栏,其用于记录自动增长的ETL任务序列号;
[0051] 存储过程名栏,其用于记录在ETL任务中调用的存储过程信息模块名称及为调用 该存储过程信息模块所输入的参数;
[0052] 错误号栏,其用于记录在存储过程模块和/或索引和备注信息存储过程亚模块运 行时产生的错误号,用〇表示无错误;
[0053] 错误信息栏,其用于记录在存储过程模块和/或索引和备注信息存储过程亚模块 运行时产生的错误信息;
[0054] 开始时间栏,其用于记录存储过程模块和/或索引和备注信息存储过程亚模块开 始运行的时间;
[0055]和
[0056] 结束时间栏,其用于记录存储过程模块和/或索引和备注信息存储过程亚模块运 行结束的时间。
[0057] (7)根据上述(1)所述的适用于多种目的表更新方式的通用ETL方法,其特征在 于,索引和备注信息存储过程亚模块包括:
[0058] 接收亚模块,其用于接收全表数据替换并重建索引子模块发出的调用信息,通知 检查子模块检查影子表是否有索引,同时,通知ETL日志表记录开始日志;
当前第1页1 2 3 4 5 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1