Windows下使用Datax3.0进行Oracle之间数据同步


Datax3.0介绍

阿里Datax3.0

环境要求

【JDK和Python需要配置环境变量,步骤省略,注意Python的安装路径不要有空格】

环境 版本 获取方式 其它说明
OS win10家庭中文版
JDK 1.8+ 链接:https://pan.baidu.com/s/16jTzFDQ48JwccPpArEOcpw
提取码:jx9b
推荐1.8
Python 2.x 链接:https://pan.baidu.com/s/1rNTyI7iqdBo6Y17fAz1AJA
提取码:2z7v
本人测试用2.7.18
Datax 3.0 链接:https://pan.baidu.com/s/1sk_Q6ghvzOecZRO23jjDqg
提取码:cb9j
云盘上Datax是修改过的,支持Oracle增量同步;没有此需求直接在GitHub上下载即可
Oracle Oracle11g 链接:https://pan.baidu.com/s/1DQGF0ghIUWyD-8PLbSbaQw 提取码:54ri
maven 3.x https://maven.apache.org/download.cgi 编译源码时使用

Datax解压测试

1、Datax是免安装的,将下载的 datax.tar.gz 放在本地磁盘下直接解压【本人是WinRAR直接解压的】;
2、进入到解压目录的 datax\bin 下,“Shift” + 鼠标右击,打开“在此处打开Powershell窗口”;
3、在命令窗口执行 CHCP65001 【避免执行过程中有中文乱码】;
4、执行命令 python .\datax.py ..\job\job.json 测试是否安装成功,出现如下信息则表示成功;

关于json文件的配置

要执行的json文件存放于Datax的解压目录的 datax\job 文件夹下,后面可将要执行的文件都放在此处统一管理。
以下是本人测试的json文件仅供参考:

{
    "job":{
        "setting":{
            "speed":{
                "channel":2
            }
        },
        "content":[
            {
                "reader":{
                    "name":"oraclereader",
                    "parameter":{
                        "username":"数据库账号",
                        "password":"数据库密码",
                        "column":[
                            "id",
                            "name"
                        ],
			"where": "id > 2000000",
                        "connection":[
                            {
                                "table":[
                                    "test"
                                ],
                                "jdbcUrl":[
                                    "jdbc:oracle:thin:@127.0.0.1:1521:orcl"
                                ]
                            }
                        ]
                    }
                },
                "writer":{
                    "name":"oraclewriter",
                    "parameter":{
                        "username":"数据库账号",
                        "password":"数据库密码",
                        "column":[
                            "id",
                            "name"
                        ],
			"writeMode": "update(id)",
                        "connection":[
                            {
                                "jdbcUrl":"jdbc:oracle:thin:@127.0.0.1:1521:orcl",
                                "table":[
                                    "test"
                                ]
                            }
                        ]
                    }
                }
            }
        ]
    }
}

以下是测试结果:

关于job.json的部分配置参数说明,原文链接:https://blog.csdn.net/qq_42764269/article/details/119577358

{
    "job": {
        "content": [
            {
                "reader": {
                    "name": "mysqlreader",
                    "parameter": {
                        "querySql": "", #自定义sql,支持多表关联,当用户配置querySql时,直接忽略table、column、where条件的配置。
                        "fetchSize": "", #默认1024,该配置项定义了插件和数据库服务器端每次批量数据获取条数,该值决定了DataX和服务器端的网络交互次数,能够较大的提升数据抽取性能,注意,该值过大(>2048)可能造成DataX进程OOM
                        "splitPk": "db_id", #仅支持整形型数据切分;如果指定splitPk,表示用户希望使用splitPk代表的字段进行数据分片,如果该值为空,代表不切分,使用单通道进行抽取
                        "column": [], #"*"默认所有列,支持列裁剪,列换序
                        "connection": [
                            {
                                "jdbcUrl": ["jdbc:mysql://IP:3306/database?useUnicode=true&characterEncoding=utf8"], 
                                "table": [] #支持多张表同时抽取
                            }
                        ],
                        "password": "",
                        "username": "",
                        "where": "" #指定的column、table、where条件拼接SQL,可以指定limit 10,也可以增量数据同步,如果该值为空,代表同步全表所有的信息
                    }
                },
                "writer": {
                    "name": "hdfswriter",
                    "parameter": {
                        "column": [], #必须指定字段名,字段类型,{"name":"","tpye":""}
                        "compress": "", #hdfs文件压缩类型,默认不填写意味着没有压缩。其中:text类型文件支持压缩类型有gzip、bzip2;orc类型文件支持的压缩类型有NONE、SNAPPY(需要用户安装SnappyCodec)。 
                        "defaultFS": "", #Hadoop hdfs文件系统namenode节点地址。
                        "fieldDelimiter": "", #需要用户保证与创建的Hive表的字段分隔符一致
                        "fileName": "", #HdfsWriter写入时的文件名,需要指定表中所有字段名和字段类型,其中:name指定字段名,type指定字段类型。 
                        "fileType": "", #目前只支持用户配置为”text”或”orc”
                        "path": "", #存储到Hadoop hdfs文件系统的路径信息,hive表在hdfs上的存储路径
                        "hadoopConfig": {} #hadoopConfig里可以配置与Hadoop相关的一些高级参数,比如HA的配置。 
                        "writeMode": "" #append,写入前不做任何处理,文件名不冲突;nonConflict,如果目录下有fileName前缀的文件,直接报错。 
                    }
                }
            }
        ],
        "setting": {
            "speed": { #流量控制
                "byte": 1048576, #控制传输速度,单位为byte/s,DataX运行会尽可能达到该速度但是不超过它
                "channel": ""  #控制同步时的并发数
                    }
            "errorLimit": { #脏数据控制
                "record": 0 #对脏数据最大记录数阈值(record值)或者脏数据占比阈值(percentage值,当数量或百分比,DataX Job报错退出
            }
        }
    }
}

需要注意的是:json文件中的读写插件【oraclereader、oraclewriter】都不是随便定义的,在 datax\plugin 下都有明确定义,要与之匹配。


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM