说明: 迁移数据有很多工具的, 后续可能会分享其它的.
Kettle最早是一个开源的ETL工具, 2006年被Pentaho收购了,.
Pentaho公司于2015年又被HitachiData Systems收购了,
Hitachi Data Systems于2017年改名为Hitachi Vantara 了.
源端:oracle 11g/12c/19c都可以
目标端: mysql/mariadb
反之也可以.
操作系统: 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)
oracle: https://cloud.tencent.com/developer/article/1674412
mariadb:
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;"
最新版本 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.1
得先配置JAVA_HOME环境变量:
直接编辑启动脚本 pdi-ce-7.1.0.0-12\data-integration\Spoon.bat 修改如下即可(第16 17 行 添加JAVA_HOME)
set JAVA_HOME=C:\Program Files\Java\jdk1.8.0_141
set PENTAHO_JAVA_HOME=%JAVA_HOME%
然后双击Spoon.bat 即可启动
文件 --> 新建 --> 转换
我得连上数据库才能迁数据吧....
转换 -- > DB连接 --> 新建
连接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 添加如下内容:
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用户和表空间)
点击测试, 没毛病就保存
也可以配置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
我们环境就简单点, 就只要一个输入 一个输出 就够了
核心对象 --> 输入 --> 表输入
核心对象 --> 输入 --> 插入/更新
连线: 按住shif+鼠标左键 连接即可
双击表输入即可, 编辑完了, 可以预览,自信点不预览也行
源表的 id 对应新表的new_id 原表的name对应新表的new_name
点击左上角的运行这个转换
检查目标端数据:
一个简单的迁移例子就完成了.
使用简单,易于控制, 跨平台跨数据库跨版本
由于是跑的sql,且有中转过程, 效率有待观望.
(我的环境查询72条/s, 每分钟就有4200条. 写的话,每分钟1800条左右. 因为我的表字段做了转换的, 没转换的话估计会快一些)
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。