公司最近有这样一个需求:
在Oracle库里面是有数据的,但是要把Oracle里的数据抽取的MySQL里面。
应该怎么使用kettle这个工具实现?
公司库里的数据就不能外漏,所以我拿网上的一个带有关联关系的四个表在做个例子,作为自己学习的留存。
建表语句:
CREATE TABLE student
(
sid INT,
sname varchar(32),
sage INT,
ssex varchar(8)
);
CREATE TABLE course
(
cid INT,
cname varchar(32),
tid INT
);
CREATE TABLE sc
(
sid INT,
cid INT,
score INT
);
CREATE TABLE teacher
(
tid INT,
tname varchar(16)
);
打开Kettle> 创建转换>建立两个链接>分别链接MySQL、Oracle。
(在这里也可以把两个连接分别共享,这样以后在kettle下的任意一个转换、作业中都不用再次配置了)。
共享后:
共享之后连接名字体会加粗,这样就不用再次配置和连接了。
在左上的核心对象中>找到输入>表输入>拖拽到转换里
也可以在步骤旁边搜索框里面直接搜索 表输入
双击 刚刚拖进来的表输入,进行配置:
由于我用的是Oracle18c,不知道是JDBC连接配置的不对还是哪里配置错了,点击获取SQL查询语句这块只要一点就卡死,我就自己手打SQL语句了,其实都一样,之后记得要点击下面的预览,看看是否能查得到,然后点击确定。
然后在左侧的 核心对象中 搜索 表输出>在输出中找到表输出>拖拽到转换中。
拖拽之后记得要 点击表输入组件后 按住Shift左键点击不松后会有一个小箭头 拖拽到表输出组件上
双击表输出组件,配置组件:
1.给表输出组件命名
2.选择数据库连接(这里是输出的库,也就是MySQL的库)
3.目标模式因为是MySQL所以不用选,目标表点击浏览选择我们建好的表
4.记得在点击下面的制定数据库字段(这样就可以映射字段了)
5.点击下面的数据库字段
6.切换到数据库字段后 选择右下方的获取字段,会自动获取两边字段相同名字的字段
(表字段:当前数据库连接的表里的字段,在这里也就是MySQL里面的字段
流字段:也就是通过前面组件传过来的字段,在这里也就是通过Oracle表输入里表里面的的字段)
如果发现字段不对 也可以用鼠标点击错误的字段名字,会有下拉框 选择就可以了。
7.选择输入字段映射 查看是否无误,如果一切无误点击下面的确定
这样最简单的抽取就OK了,点击左上面的运行摁钮
跳出执行转换窗口 点击下面的启动
跳出文件以及改变窗口,这里可以把自动保存转换点上,这样每次运行之前就不会都问你一遍了,spoon每次运行之前都是需要保存的
点击是,运行
上面两个绿色的✔️,没有出现红色的❌,一切OK 下面也会有步骤的操作 包括读 写 输入 输出啊 当报错的时候看看步骤的操作 可以快速定位错的地方。其他的表我就不做演示了,其实都一样。
查看一下MySQL的数据库 数据已经躺在表中了
//你好,我是山丁,小白一枚,目前在职18线互联网公司。
//喜欢编程,喜欢剪辑,信奉快乐工作,热爱生活。
//之前没怎么写过博客,自己技术不佳,一直是看别人的。
//最近想试着写一写,如果哪里没顾及得的到,或有错误、误导的地方请指正,倍加感谢。