kettle多数据源多表关联同步到单表

kettle多数据源多表关联同步到单表


概述:在kettle中下图设计转换流程

在这里插入图片描述
说明:先在准备两个数据库,可以是不同数据库类型的数据库,下面采用mysql数据库为例,创建test_input数据库和test_output数据库。
在这里插入图片描述
分别在test_input数据库创建教师表teacher和教师课程关系表teacher_course。在test_output数据库创建课程表course。
在教师表创建测试数据,测试数据如下图:
在这里插入图片描述
在教师课程关系表创建测试数据,测试数据如下图:
在这里插入图片描述
在课程表创建测试数据,测试数据如下图:
在这里插入图片描述
测试sql关联的效果:
在这里插入图片描述
现在使用kettle进行数据同步达到sql关联的效果
1.拉出表输入进行教师表输入:
在这里插入图片描述
(这里需要你创建下数据库连接test_input和test_output来对应2个数据库)即下图:
在这里插入图片描述
在这里插入图片描述
若你不知道怎么创建数据库连接的话可以点击新建:
在这里插入图片描述
或在主对象树的DB连接右键新建。
哈哈扯远了。现在我们回到教师表的表输入操作上来。
先填写步骤名称再选择数据库连接然后点击获取sql查询语句:
在这里插入图片描述
选择对应的表:
在这里插入图片描述

教师课程关系表和课程表的表输入按照教师表的表输入操作进行^ _ ^
拉入记录集关联前需要先拉入排序记录(同一个记录集关联的输入源的排序字段一般以关联字段的相同排序方式进行^ _ ^),以教师表的职工号排序为例:
在这里插入图片描述
其他排序也按照这个标准进行哈^ _ ^
进行记录集关联:以教师表和教师课程关系表关联为例:
在这里插入图片描述
记录集关联后我们需要对字段进行选择以获取我们需要对字段:
在这里插入图片描述
和对名称一样对字段进行重新命名:
在这里插入图片描述
最后同步到我们的目标表集表输出:
在这里插入图片描述
最后最后我们可以点击运行看看效果:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
哈哈大功告成^ _ ^

### Kettle 中实现数据关联同步的方法 在实际业务场景中,之间的数据关联同步是一个常见的需求。以下是关于如何利用 Kettle 实现这一目标的具体方法。 #### 1. **理解 ETL 流程** ETL 是指 Extract(提取)、Transform(转换)和 Load(加载)三个阶段的过程。Kettle 提供了一种图形化的方式来进行这些操作[^2]。因此,在设计一个关联同步的任务时,可以按照以下逻辑构建: - 使用 `Table Input` 步骤从源数据库中读取的数据。 - 利用 `Join Rows (Cartesian product)` 或者 `Database Join` 来完成间的连接操作。 - 将经过处理后的数据写入目标数据库或者文件系统。 #### 2. **具体配置步骤** ##### (1)创建 Transformation 和 Job 启动 Spoon 工具后新建一个 transformation 文件作为基础框架的一部分。随后再建立 job 负责调度该 transformation 定期运行。 ##### (2)设置输入组件 对于每一个需要参与运算的关系型格都需要单独定义其对应的 table input 组件,并指定 SQL 查询语句获取所需字段以及过滤条件等内容[^3]。 ```sql SELECT id, name FROM employees WHERE last_update_time >= ? ``` 上述例子展示了如何从员工里选取特定时间段内的记录[^1]。 ##### (3)执行 JOIN 操作 当所有必要的原始资料都已经准备好之后,则可以通过 join rows(cartesian product) 这样的方式把它们组合起来形成最终的结果集;当然也可以采用 database lookup 等其他形式达成相似目的视乎具体情况而定。 注意这里可能涉及到性能优化方面的工作比如索引的选择等等因素都会影响整体效率现。 ##### (4)输出结果至目的地 最后一步就是决定把这些加工完毕的信息存放到哪里去——可能是另一个关系型数据库也可能是 NoSQL 类型存储甚至是简单的 CSV 文本档等形式不一而足取决于项目本身的需求设定情况怎样而已啦! --- ### 示例代码片段展示 下面给出一段伪代码用于说明整个过程的大致轮廓结构仅供参考学习用途并非真实可用版本哦~ ```bash # 假设我们有两个 customer 和 order 需要进行左外连结 select c.*, o.order_id, o.amount from customers as c left outer join orders as o on c.id = o.customer_id; ``` --- ### 总结 综上所述,借助于强大的开源软件 Pentaho Data Integration(Kettle), 我们完全可以轻松应对复杂的跨库之间相互参照映射这样的高级应用场景挑战。只要遵循标准的操作指南加上一点点耐心调试就能顺利完成任务咯!
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值