前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >使用kettle迁移oracle 12c数据到mysql (简单例子)

使用kettle迁移oracle 12c数据到mysql (简单例子)

原创
作者头像
大大刺猬
修改2021-02-19 10:03:04
2.8K0
修改2021-02-19 10:03:04
举报
文章被收录于专栏:大大刺猬大大刺猬

说明: 迁移数据有很多工具的, 后续可能会分享其它的.

Kettle最早是一个开源的ETL工具, 2006年被Pentaho收购了,.

Pentaho公司于2015年又被HitachiData Systems收购了,

Hitachi Data Systems于2017年改名为Hitachi Vantara 了.

源端:oracle 11g/12c/19c都可以

目标端: mysql/mariadb

反之也可以.

1. 本次实验环境

操作系统: oel7.8

源端数据库: oracle 12.2

目标端数据库 : mariadb 5.5

迁移工具: kettle版本: pdi-ce-7.1.0.0-12

这个工具是图形化的, 我就安装在windows上演示了,

(安装在linux上的需要设置DISPLAY , 命令参考: export DISPLAY=`last | head -1 | awk '{print $3}'`:0.0)

2.准备环境

2.1 安装数据库

oracle: https://cloud.tencent.com/developer/article/1674412

mariadb:

代码语言:javascript
复制
yum install mariadb-server mariadb -y
systemctl start mariadb
systemctl enable mariadb
#简单粗暴...
mysql -uroot -e "set password for 'root'@'localhost'=password('123456');"
mysql -uroot -p123456 -e "create database test_kettle;"
mysql -uroot -p123456 -e "create user 'kettle_mariadb'@'%' identified by '123456';"
mysql -uroot -p123456 -e "grant all privileges on test_kettle.* to 'kettle_mariadb'@'%' identified by '123456';"
mysql -uroot -p123456 -e "flush privileges;"

3. 安装kettle

3.1 下载并安装

最新版本 pdi-ce-9.1.0.0-324

本次实验实验 pdi-ce-7.1.0.0-12

官网下载太慢了, 我就选国内的镜像了

北京理工大学: http://mirror.bit.edu.cn/pentaho/Data%20Integration/7.1/pdi-ce-7.1.0.0-12.zip

(截至本文时间2021.02.18 这个访问不了了, 报403 .....)

这个工具是JAVA写的, 要安装相应的JDK. 本次使用jdk8.2

windows: JDK 8.2 , linux版本: JDK 8.2

直接解压就可以用(linux和windows是一样的):

3.2 配置kettle

3.2.1

得先配置JAVA_HOME环境变量:

直接编辑启动脚本 pdi-ce-7.1.0.0-12\data-integration\Spoon.bat 修改如下即可(第16 17 行 添加JAVA_HOME)

代码语言:text
复制

set JAVA_HOME=C:\Program Files\Java\jdk1.8.0_141
set PENTAHO_JAVA_HOME=%JAVA_HOME%

然后双击Spoon.bat 即可启动

4. 使用kettle迁移数据

4.1 创建转换

文件 --> 新建 --> 转换

4.2 创建 DB连接

我得连上数据库才能迁数据吧....

转换 -- > DB连接 --> 新建

4.2.1 连接oracle pdb

连接oracle的pdb有点坑, 不能直接连接, 得先配置JNDI.

(如果你没得驱动的话, 还得先拷贝驱动如:ojdbc8.jar 到 pdi-ce-7.1.0.0-12\data-integration\lib 目录下)

编辑 pdi-ce-7.1.0.0-12\data-integration\simple-jndi\jdbc.properties 添加如下内容:

代码语言:javascript
复制
oracle12c/type=javax.sql.DataSource 
oracle12c/driver=oracle.jdbc.driver.OracleDriver 
oracle12c/url=jdbc:oracle:thin:@192.168.101.19:1521/ddcwpdb
oracle12c/user=system
oracle12c/password=ddcw

然后选择JNDI连接方式 (我这里偷懒用的system, 生产环境不要用system用户和表空间)

点击测试, 没毛病就保存

这种就是正常的,不是的话,就去找原因
这种就是正常的,不是的话,就去找原因

4.2.2 连接 mariadb

也可以配置jndi,但是没必要. 我就直接连接了

还是得先整驱动.., 没得的话就会报错如下.

Driver class 'org.mariadb.jdbc.Driver' could not be found, make sure the 'MariaDB' driver (jar file) is installed.

org.mariadb.jdbc.Driver

所以你得先去mariadb官网下载mariadb-java-connect.jar . 比较麻烦, 所以我耍个小聪明,把mariadb当成mysql来用. mysql的驱动你应该有把, 没得的话安装 mysql-connector-java 就有了/usr/share/java/mysql-connector-java.jar

机智如我
机智如我

4.3 创建流程

我们环境就简单点, 就只要一个输入 一个输出 就够了

核心对象 --> 输入 --> 表输入

核心对象 --> 输入 --> 插入/更新

连线: 按住shif+鼠标左键 连接即可

4.3.1编辑表输入

双击表输入即可, 编辑完了, 可以预览,自信点不预览也行

4.3.2 编辑输出(插入/更新)

源表的 id 对应新表的new_id 原表的name对应新表的new_name

4.4 开始流程

点击左上角的运行这个转换

检查目标端数据:

总结

一个简单的迁移例子就完成了.

优点:

使用简单,易于控制, 跨平台跨数据库跨版本

缺点:

由于是跑的sql,且有中转过程, 效率有待观望.

(我的环境查询72条/s, 每分钟就有4200条. 写的话,每分钟1800条左右. 因为我的表字段做了转换的, 没转换的话估计会快一些)

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1. 本次实验环境
  • 2.准备环境
    • 2.1 安装数据库
    • 3. 安装kettle
      • 3.1 下载并安装
        • 3.2 配置kettle
        • 4. 使用kettle迁移数据
          • 4.1 创建转换
            • 4.2 创建 DB连接
              • 4.2.1 连接oracle pdb
              • 4.2.2 连接 mariadb
            • 4.3 创建流程
              • 4.3.1编辑表输入
              • 4.3.2 编辑输出(插入/更新)
            • 4.4 开始流程
              • 优点:
              • 缺点:
          • 总结
          相关产品与服务
          云数据库 SQL Server
          腾讯云数据库 SQL Server (TencentDB for SQL Server)是业界最常用的商用数据库之一,对基于 Windows 架构的应用程序具有完美的支持。TencentDB for SQL Server 拥有微软正版授权,可持续为用户提供最新的功能,避免未授权使用软件的风险。具有即开即用、稳定可靠、安全运行、弹性扩缩等特点。
          领券
          问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档