目录

  • 一、前期准备
  • 二、用kettle迁移一张表的数据
  • 1. 打开kettle
  • 2. 新建转换
  • 3. 添加表输入和表输出
  • 4. 配置表输入
  • 5. 配置表输出
  • 6.开始导数
  • 7.检查
  • 三、注意


一、前期准备

  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 如何连接mysql数据库 kettle怎么连接oracle数据库_数据库迁移

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

1. 打开kettle

kettle文件夹下双击 Spoon.bat

2. 新建转换

在菜单栏点击 文件-新建-转换

kettle 如何连接mysql数据库 kettle怎么连接oracle数据库_mysql_02


kettle 如何连接mysql数据库 kettle怎么连接oracle数据库_kettle 如何连接mysql数据库_03

3. 添加表输入和表输出

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

kettle 如何连接mysql数据库 kettle怎么连接oracle数据库_mysql_04


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

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

转换1如下:

kettle 如何连接mysql数据库 kettle怎么连接oracle数据库_kettle 如何连接mysql数据库_05

4. 配置表输入

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

kettle 如何连接mysql数据库 kettle怎么连接oracle数据库_互联网_06


表输入需要连接的是oracle数据库,点击新建,弹出数据库连接框。默认为oracle连接,如图注意配置信息和必填项。

kettle 如何连接mysql数据库 kettle怎么连接oracle数据库_kettle 如何连接mysql数据库_07


填写完,点击下方的测试按钮,检验是否连接上oracle数据库。

kettle 如何连接mysql数据库 kettle怎么连接oracle数据库_mysql_08


连接成功后,点击数据库连接框的确认按钮,返回表输入编辑框,此时数据库连接项里已经有新建好的oracle连接 odb,想要更改连接配置,点击编辑即可。

kettle 如何连接mysql数据库 kettle怎么连接oracle数据库_数据库迁移_09


接下来写SQL,即对oracle库的执行,最简单的,就是从这张表查询数据。比如:

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

你可以自己填写sql,也可以点击右边的 获取SQL查询语句 选择表后自动生成sql。(注意,oracle的sql中表名无论大小写,最终都会转换成大写,如果要查询的表名是小写,需要在表名上加双引号)

kettle 如何连接mysql数据库 kettle怎么连接oracle数据库_数据库迁移_10


写好sql,可以点击下方的预览查看查询出的数据是否是你预期的。kettle会提醒 输入预览记录数量 ,默认是1000,这样当查出的数据超过1000条,就先预览前1000条。但是我只查了5条,就只显示5条记录。

kettle 如何连接mysql数据库 kettle怎么连接oracle数据库_mysql_11


点击关闭,返回表输入的配置框,点击确定,表输入就配置完成了。

5. 配置表输出

接下来配置表输出,过程与表输入类似,双击 表输出,弹出配置框。

kettle 如何连接mysql数据库 kettle怎么连接oracle数据库_kettle_12


我们的主要工作是建立 数据库连接,填写 目标表。数据库连接目前显示的是已经建立的oracle连接odb,这里我们需要新建mysql的连接。点击新建,弹出数据库连接框,以下是配置和必填项,注意连接类型是mysql。

kettle 如何连接mysql数据库 kettle怎么连接oracle数据库_kettle 如何连接mysql数据库_13


同样,填写好点击测试查看是否连接上,点击确认,返回表输出配置框。

kettle 如何连接mysql数据库 kettle怎么连接oracle数据库_kettle_14


数据库连接 选择mysql连接mdb,目标表 就是mysql中要导入的这张表,可以手动填写,也可以点击 目标表 右边的 浏览 选择这张表。

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

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

6.开始导数

表输入和表输出都配置好,数据库连接也没问题,就可以开始导数了。点击 转换1 面板左上角的三角形,运行这个转换。

kettle 如何连接mysql数据库 kettle怎么连接oracle数据库_数据库迁移_15


点击执行转化框右下角的 启动 按钮。

kettle 如何连接mysql数据库 kettle怎么连接oracle数据库_数据库迁移_16


开始转换,下面会有执行结果的显示。日志记录了步骤,Preview data可以查看迁移的数据。

kettle 如何连接mysql数据库 kettle怎么连接oracle数据库_互联网_17


转换成功,在表输入和表输出的图标右上角会有绿色的√,如果转换出错,会在出错的那一步打红色的×(比如输入对,输出错,会在输入右上角打√,输出右上角打×)。

7.检查

最后,可以去Navicat查看数据有没有迁移过来。

kettle 如何连接mysql数据库 kettle怎么连接oracle数据库_mysql_18

三、注意

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