oracle库中数据利用datax工具同步至mysql库

查看oracle版本

bash 复制代码
$sqlplus aaa/aaaa@192.168.1.1/lcfa

SQL*Plus: Release 19.0.0.0.0 - Production on Tue Oct 17 15:56:46 2023
Version 19.15.0.0.0

Copyright (c) 1982, 2022, Oracle.  All rights reserved.

Last Successful login time: Tue Oct 17 2023 15:56:03 +08:00

Connected to:
Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
Version 19.15.0.0.0

SQL> exit
Disconnected from Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
Version 19.15.0.0.0

查看mysql版本

bash 复制代码
$mysql -V
mysql  Ver 14.14 Distrib 5.7.43, for linux-glibc2.12 (x86_64) using  EditLine wrapper

查看主机版本

bash 复制代码
$cat /etc/redhat-release 
Red Hat Enterprise Linux Server release 7.6 (Maipo)```

查看主机jdk和python版本

bash 复制代码
$ java -version
openjdk version "1.8.0_181"
OpenJDK Runtime Environment (build 1.8.0_181-b13)
OpenJDK 64-Bit Server VM (build 25.181-b13, mixed mode)

$python --version
Python 2.7.5

注意点:

1、部署datax的主机需要jdk1.8和python2.7.5以上版本,主机、数据库版本没有要求

2、部署datax的主机需要安装python控件cx_Oracle-7.3.0来登录oracle

3、部署datax的主机需要和mysql、oracle主机网络是通的且能登录数据库

4、mysql和oracle库中表的字段必须要统一,josn配置文件中字段要一样

5、Mysql保留字处理:

ID,ip,port,desc 等mysql的关键字被认为是保留字,这个不能用在json文件中

第一步:解压datax

bash 复制代码
tar -zxvf datax.tar.gz 
ls -rlt
total 810304
-rw-rw-r--  1 lcims lcims 829749309 Oct 16 14:34 datax.tar.gz
drwxr-x--- 14 lcims lcims       236 Oct 16 14:52 datax

datax目录包含:

bash 复制代码
bin:程序的执行目录,里面的data.py是控制台执行该程序的启动文件
log:执行后的日志,每执行一次生成一个日志文件,可以清楚的看到报错信息
plugin:reader和writer插件,比如reader里的mysqlreader为mysql的读取插件
3ajob:是自定义的文件夹,写入了要迁移的表信息 

3ajob目录下为要迁移表数据的josn文件配置信息:

python /datax/datax/bin/datax.py -r mysqlreader -w oraclewriter --查看josn格式模板

bash 复制代码
./3ajob/tables_name.josn
解释:
{
    "job": {
        "setting": {
            "speed": {
                "channel": 16    #(这个是多线程,我们是16核cpu,所以用的是16)
            }
        }, 
        "content": [
            {
                "reader": {
                    "name": "oraclereader", #(oracle的信息配置,从oracle读取)

                    "parameter": {
                        "username": "test", #(oracle的用户和密码)
                        "password": "test", #(oracle的用户和密码)
                        "column": [   #(column[]中是oracle表中的字段信息)
                            "aaa",
"bbb",
"ccc"
                        ],
						"where":" 1=1 ",
                        "connection": [
                            {
                                "table": [
                                    "表名" #(要迁移的表)
                                ], 
                                "jdbcUrl": [
                                    "jdbc:oracle:thin:@ip:端口/实例"#(oracle表数据源配置)
                                ]
                            }
                        ]
                    }
                }, 
                "writer": {
                    "name": "mysqlwriter", #(mysql写入配置)
                    "parameter": {
                        "writeMode": "update", #(mysql写入配置)
                        "username": "test", 
                        "password": "test", 
                        "column": [ #(mysql字段)
                                "aaa",
"bbb",
"ccc"
                        ], 
                        "session": [
                            "set session sql_mode='ANSI'"
                        ], 
                        "preSql": [
                            "select 1 from 表名"
                        ], 
                        "connection": [#(mysql链接信息)
                            {
                                "jdbcUrl": "jdbc:mysql://ip:端口/实例?useUnicode=true&characterEncoding=utf8", 
                                "table": [
                                    "表名"
                                ]
                            }
                        ]
                    }
                }
            }
        ]
    }
}

配置完成进入bin目录执行脚本,查看日志

bash 复制代码
进入bin目录
cd  ./datax/bin
执行命令:nohup python ./datax.py /路径/脚本名 &
例:
$  nohup python ./datax.py ../3ajob/aaa.json &
查看日志:tail -100f nohup.out 

数据同步完成,即可查看mysql中的数据

相关推荐
龙腾AI白云27 分钟前
大语言模型:从语言理解到通用智能的跃迁
数据库·人工智能·机器学习·知识图谱
SelectDB1 小时前
快手基于 Apache Doris 千亿多模态检索的实践
大数据·数据库·数据分析
SelectDB1 小时前
StarRocks 迁移至 Apache Doris 完整指南:三步完成结构、数据与业务平滑切换
大数据·数据库·数据分析
这个DBA有点耶1 小时前
InnoDB索引组织表下,复合主键和自增主键的物理存储差异与选型对比
数据库·mysql·架构
李少兄1 小时前
数据库批量清理前置防御:如何严谨校验目标表是否存在
mysql
香吧香1 小时前
Docker Swarm 线上环境 MariaDB XA 悬停事务故障排查
mysql·异常
其实防守也摸鱼2 小时前
常见安全架构中 Shiro 的认证确认机制解析
运维·服务器·数据库·windows·github
小白男神2 小时前
MySQL进阶学习三(视图)
后端·mysql
TDengine (老段)2 小时前
TDengine 常见问题 TOP7
大数据·数据库·时序数据库·常见问题·tdengine·涛思数据
+VX:Fegn08952 小时前
计算机毕业设计|基于java+ vue共享单车信息系统(源码+数据库+文档)
数据库·vue.js·spring boot·后端·课程设计