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