暂无图片
暂无图片
1
暂无图片
暂无图片
暂无图片

Kettle自动同步表结构实践

data之道 2017-02-27
3069

  • 一、问题

  • 二、实现方案

    • 2.1、思路

    • 2.2、步骤

  • 三、后记

 一、问题

        数据仓库的体系结构一般都有数据源层:从多个数据源增量或全量同步数据到数据仓库,表结构和数据源的结构基本一致。以后的ETL处理都是基于该层中的数据,不再直接从业务库中获取,这样业务层就和数据仓库实现了解耦。

        随着业务的变化,表结构更改是很频繁的,导致同时需要更改数据仓库里的表结构,如果业务库更改的同时没有及时更改数据源层里的表结构,同步就会失败。这就要求我们能够自动同步表结构,避免同步失败的风险。

二、实现方案

    2.1、思路

        表结构是可以在数据库的元数据中查到的,通过比较两边的元数据,增加相应的字段。这里以mysql为例,表结构是在information_schema.COLUMNS表中。

    2.2、步骤

        表结构是可以在数据库的元数据中查到的,通过比较两边的元数据,增加相应的字段。这里以mysql为例,表结构是在information_schema.COLUMNS表中。

        1、从配置表中读取需要同步表结构的信息

        从配置表中好处是,当有新的表需要同步,不用修改JOB,提高系统灵活性;配置表结构:

CREATE TABLE `etl_ods_table` (

`tablename` varchar(100) DEFAULT NULL COMMENT '表名',

`dbname` varchar(100) DEFAULT NULL COMMENT '数据库名'

);

        创建Transformation,从etl_ods_table读取数据,并用Copy rows to result组件,把查询的结果信息传递给下一个Transformation:

    2、比较业务库表结构和DW中表结构,并执行修改表结构操作

        创建trans_syn_table_structure Transformation,并在Parameters输入DB_NAME和TABLE_NAME两个参数:

    新建两个表输入组件,命名为online和dw,分别查询业务库和DW数据库中的表结构,例如:

    根据列字段进行排序,找到业务库有而DW库没有的字段,在dw数据库中根据找到的这些信息执行alter操作:

    Transformcation的整体执行过程:

    3、新建JOB

        新建job_syn_table_structure,trans顺序执行,并失败时发送通知邮件:

    加入KETTLE技术交流群,分享学习心得,一起共同进步。

    QQ群:452881901,扫下方二维码快速加群:

点击下方阅读原文,下载JOB

文章转载自data之道,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论