oracle到mysql的单表数据迁移-kettle的使用

一、前期准备

  1. 建好 oracle库mysql库,以及对应的表,表结构要一致。建表时,oracle 到 mysql可能会有字段类型上的变化:比如DATE变为datetime,但是kettle会处理好。

  2. 电脑可以连接上oracle库mysql库

  3. kettle已经下载好。(链接:kettle下载

  4. 有oracle和mysql的驱动jar包,并放在 /pdi-ce-8.2.0.0-342/pdi-ce-8.2.0.0-342/lib 下。(缺失jar包就连不上这两个库)

在这里插入图片描述

二、用kettle迁移一张表的数据

1. 打开kettle

kettle文件夹下双击 Spoon.bat

2. 新建转换

在菜单栏点击 文件-新建-转换
在这里插入图片描述
在这里插入图片描述

3. 添加表输入和表输出

点击左侧的核心对象标签,面板上有个tree,找到输入和输出分支。

在输入分支下找到 表输入 并双击,转换1窗口下啊出现一个表输入图标;再在输出分支下找到 表输出 并双击,转换1窗口下多了 表输出 图标,并且从 表输入表输出 有个深蓝色的箭头,代表两节点的连接。

也可以把左侧的 表输入表输出 直接拖拽到右侧的窗口,按住 shift键,用鼠标从 表输入 划向 表输出 建立连接。

转换1如下:
在这里插入图片描述

4. 配置表输入

双击 表输入,弹出配置框。我们需要修改的是 数据库连接 和查询用的 SQL ,当然也可以重新起一个步骤名称。

在这里插入图片描述
表输入需要连接的是oracle数据库,点击新建,弹出数据库连接框。默认为oracle连接,如图注意配置信息和必填项。
在这里插入图片描述
填写完,点击下方的测试按钮,检验是否连接上oracle数据库。
在这里插入图片描述
连接成功后,点击数据库连接框的确认按钮,返回表输入编辑框,此时数据库连接项里已经有新建好的oracle连接 odb,想要更改连接配置,点击编辑即可。
在这里插入图片描述
接下来写SQL,即对oracle库的执行,最简单的,就是从这张表查询数据。比如:

//查询AA01表的所有字段
SELECT * FROM AA01 
//查询AA01表的前5行数据
SELECT * FROM AA01 WHERE ROWNUM <= 5

你可以自己填写sql,也可以点击右边的 获取SQL查询语句 选择表后自动生成sql。(注意,oracle的sql中表名无论大小写,最终都会转换成大写,如果要查询的表名是小写,需要在表名上加双引号)
在这里插入图片描述
写好sql,可以点击下方的预览查看查询出的数据是否是你预期的。kettle会提醒 输入预览记录数量 ,默认是1000,这样当查出的数据超过1000条,就先预览前1000条。

但是我只查了5条,就只显示5条记录。
在这里插入图片描述
点击关闭,返回表输入的配置框,点击确定,表输入就配置完成了。

5. 配置表输出

接下来配置表输出,过程与表输入类似,双击 表输出,弹出配置框。
在这里插入图片描述
我们的主要工作是建立 数据库连接,填写 目标表

数据库连接目前显示的是已经建立的oracle连接odb,这里我们需要新建mysql的连接。点击新建,弹出数据库连接框,以下是配置和必填项,注意连接类型是mysql。
在这里插入图片描述
同样,填写好点击测试查看是否连接上,点击确认,返回表输出配置框。
在这里插入图片描述
数据库连接 选择mysql连接mdb,目标表 就是mysql中要导入的这张表,可以手动填写,也可以点击 目标表 右边的 浏览 选择这张表。

提交记录数量 是指数据迁移时,每经过几条记录commit一次,默认1000,则日志就会每隔1000条记录打印一次状态。

表输出 配置好,点击确定。转换配置完成。

6.开始导数

表输入和表输出都配置好,数据库连接也没问题,就可以开始导数了。点击 转换1 面板左上角的三角形,运行这个转换。
在这里插入图片描述
点击执行转化框右下角的 启动 按钮。
在这里插入图片描述
开始转换,下面会有执行结果的显示。日志记录了步骤,Preview data可以查看迁移的数据。
在这里插入图片描述
转换成功,在表输入和表输出的图标右上角会有绿色的√,如果转换出错,会在出错的那一步打红色的×(比如输入对,输出错,会在输入右上角打√,输出右上角打×)。

7.检查

最后,可以去Navicat查看数据有没有迁移过来。
在这里插入图片描述

三、注意

  1. 转换可以保存,扩展名是 ktr,保存后下次可以接着用。
  2. 记得添加数据库连接的jar包,否则连不上数据库。
  3. 数据库连接配置要一一对应,不要连oracle的库连接类型写mysql。
  4. 查询的表和目标表要一一对应。
  5. 可能会遇到字段类型的问题,比如oracle中存储图片的字段类型是blob,mysql中用text,运行转换时就会报错。一般blob用来存图片,text用来存文本,所以应把mysql中的字段类型改为blob或longblob。
  6. 如果目标表没有对应的字段,会报错,建表时注意表结构一一对应。
  7. 转换中两个节点之间要建立连接,如果不小心断开,按住shift键手动建立连接。

下一篇,《oracle到mysql的多表批量数据迁移-kettle的使用》

猜你喜欢

转载自blog.csdn.net/weixin_38673554/article/details/86238938