使用kettle进行数据迁移

一、kettle下载与运行

1. 下载地址

https://community.hitachivantara.com/docs/DOC-1009855
在这里插入图片描述

2. 运行

下载完成后,解压即可,双击Spoon.bat运行。
注意需要配好JDK path。
启动较慢,十秒钟可能毫无反应,耐心等待。

说明:后文例子是从sqlserver迁移到mysql

二、使用“复制多表向导”进行整表复制

适用业务场景:小数据量数据迁移,直接整表迁移至目标库(新建源表同样的表),然后在目标库中进行数据整理。

1. 新建一个“转换”
2. 设置DB连接

涉及什么库,就要在lib目录下添加对应的数据库连接jar包(注意版本不合适可能报错):

sqlserver:jtds-1.3.1.jar
mysql:mysql-connector-java-5.1.18.jar
oracle:ojdbc14-10.2.0.1.0.jar

(1)设置源库连接:
在这里插入图片描述
(2)设置目标库连接:
在这里插入图片描述
可能碰到的错误:
总体解决思路:在确保填写无误之后,重点考虑mysql-connector-java-xxx.jar 的版本(测试发现mysql-connector-java-5.1.46.jar比较好用。
错误1:Error connecting to database: (using class org.gjt.mm.mysql.Driver)
Unknown initial character set index ‘255’ received from server. Initial client character set can be forced via the ‘characterEncoding’ property.
解决1:设置characterEncoding=utf8
在这里插入图片描述
错误2:Error connecting to database: (using class org.gjt.mm.mysql.Driver)
Unexpected exception encountered during query.
解决2:mysql-connector-java-*.jar版本不合适,改成mysql-connector-java-5.1.46.jar测试可以。

3. 使用“复制多表向导”

在这里插入图片描述
(1)选择源数据库和目标数据库
(2)选择需要复制的表
(3)设置作业名称和保存位置,完成

问题1:为什么使用kettle,不直接导出sql语句啥的呢?
因为kettle会自动处理不同数据库字段格式兼容的问题。
问题2:为什么使用复制多表向导,不使用复制单表向导呢?
复制单表要求目标库有对应表,不会自动生成新建表的步骤;复制多表(选择单表当然可以),会检测目标库有没有同名表,没有的话会生成新建表的步骤,有的话就没有新建表步骤。(测试发现是这样,不当之处请指正)

4. 执行

在这里插入图片描述

三、有字段映射的单表迁移

适用业务场景:源库中某表数据迁移到目标库中某表,需要设置字段映射。

也不用从核心对象中拖入对象啥的,直接使用“复制单表向导”。

1. 新建一个“转换”
2. 设置DB连接
3. 使用“复制单表向导”

(1)选择源数据库和目标数据库
(2)选择需要复制的表,完成
在这里插入图片描述

4. 修改一些设置

(1)表输入步骤:可以修改select语句,也可修改步骤名称等。
(2)表输出步骤:
在这里插入图片描述

5. 执行

四、设置作业定时调度

1. 双击作业start节点,设置定时调度

下图设置了每隔5秒执行一次
在这里插入图片描述

2. 点击运行,选择Start job at = Start,执行

在这里插入图片描述

3. 查看日志,检查执行是否正常

五、linux环境kettle部署

https://www.baidu.com/s?wd=kettle+linux部署&ie=utf-8

发布了67 篇原创文章 · 获赞 70 · 访问量 16万+

猜你喜欢

转载自blog.csdn.net/fukaiit/article/details/88729294