dataX是阿里開(kāi)源的離線(xiàn)數(shù)據(jù)庫(kù)同步工具的使用
dataX是阿里開(kāi)源的離線(xiàn)數(shù)據(jù)庫(kù)同步工具的使用
DataX介紹:
DataX 是阿里開(kāi)源的一個(gè)異構(gòu)數(shù)據(jù)源離線(xiàn)同步工具,致力于實(shí)現(xiàn)包括關(guān)系型數(shù)據(jù)庫(kù)(MySQL、Oracle等)、HDFS、Hive、ODPS、HBase、FTP等各種異構(gòu)數(shù)據(jù)源之間穩(wěn)定高效的數(shù)據(jù)同步功能。
一句話(huà):dataX是阿里開(kāi)源的離線(xiàn)數(shù)據(jù)庫(kù)同步工具。
DataX設(shè)計(jì)理念
DataX本身作為數(shù)據(jù)同步框架,將不同數(shù)據(jù)源的同步抽象為從源頭數(shù)據(jù)源讀取數(shù)據(jù)的Reader插件,以及向目標(biāo)端寫(xiě)入數(shù)據(jù)的Writer插件,理論上DataX框架可以支持任意數(shù)據(jù)源類(lèi)型的數(shù)據(jù)同步工作。同時(shí)DataX插件體系作為一套生態(tài)系統(tǒng), 每接入一套新數(shù)據(jù)源該新加入的數(shù)據(jù)源即可實(shí)現(xiàn)和現(xiàn)有的數(shù)據(jù)源互通。
支持的數(shù)據(jù):

編輯
環(huán)境搭建
系統(tǒng)要求
系統(tǒng):Linux/Windows
JDK:1.8+(推薦1.8)
Python:2.6.x(推薦Python2.6.x)
Maven:3.x
凱哥在Windos環(huán)境搭建的。資料如下圖:

編輯

編輯
如果本地沒(méi)有Python環(huán)境的話(huà),下載python-2.7.6-amd64.msi。然后點(diǎn)擊安裝后。
查看python版本號(hào):

編輯
如果沒(méi)有,配置下系統(tǒng)環(huán)境變量就可以了。

編輯
測(cè)試:
將下載的datax.tar.gz解壓后,進(jìn)入到datax目錄下的bin中,里面有datax.py文件??梢栽赾md中測(cè)試:
python E:\datax\bin\datax.py E:\datax\job\job.json
說(shuō)明:
Python:執(zhí)行pytho的
E:\xx.py:datax的py腳本
E:\xx.json:同步配置的json文件
如果亂碼的話(huà),現(xiàn)在CMD輸入:
CHCP 65001
使用示例:
1:從CVS文件中,將數(shù)據(jù)同步到mysql中
2:從mysql中將數(shù)據(jù)同步到mysql中
3:從Oracle中將數(shù)據(jù)同步到mysql中
一:從CVS文件中,將數(shù)據(jù)同步到mysql中:
1.1:配置json腳本
結(jié)構(gòu)如下:

編輯
分為reader和writer兩個(gè)。
reader如下圖:

編輯
說(shuō)明:
Path:cvs文件的位置
Encoding:編碼
Column:行
skipHeader:是否跳過(guò)表頭
CVS文件中數(shù)據(jù):

編輯
writer的配置如下圖:

編輯
說(shuō)明:
name:是什么寫(xiě)。Oracle呢還是mysql呢
parameter:參數(shù)
writemode:寫(xiě)的模式。Insert表示插入的
username:數(shù)據(jù)庫(kù)的用戶(hù)名
password:數(shù)據(jù)庫(kù)的密碼
column:表的字段
connection:數(shù)據(jù)庫(kù)連接
jdbcUrl:數(shù)據(jù)庫(kù)鏈接
table:表名
數(shù)據(jù)庫(kù)表:

編輯
1.2執(zhí)行:
在datax的bin目錄執(zhí)行:
python datax.py ../job/ csv_mysql.json

編輯
執(zhí)行后數(shù)據(jù):

編輯
具體的json配置信息:
{ "job": { "setting": { "speed": { "channel": 1 } }, "content": [ { "reader": { "name": "txtfilereader", "parameter": { "path": ["D:/ datax.csv"], "encoding": "gbk", "column": [ { "index": 1, "type": "string" }, { "index": 2, "type": "string" } , { "index": 3, "type": "string" } ], "fieldDelimiter": ",", "skipHeader": "true" } }, "writer": { "name": "mysqlwriter", "parameter": { "writeMode": "insert", "username": "root", "password": "123456", "column": [ "t_name", "addr", "c" ], "session": [], "connection": [ { "jdbcUrl": "jdbc:mysql://127.0.0.1:3306/guns?useUnicode=true&characterEncoding=utf8&useSSL=false&serverTimezone=GMT%2B8", "table": ["datax_test"] } ] } } } ] } } |
二:從mysql中將數(shù)據(jù)同步到mysql中
1:配置信息如下
reader配置:

編輯
writer配置:

編輯
配置完成后,執(zhí)行方法同1.2
三:從Oracle中將數(shù)據(jù)同步到mysql中

編輯
說(shuō)明:
jdbcUrl配置:"jdbcUrl": ["jdbc:oracle:thin:@localhost:1521:coredb"],
querySql:有的時(shí)候,我們同步數(shù)據(jù)的時(shí)候,需要根據(jù)條件查詢(xún)同步的。所以可以在這個(gè)querysql中寫(xiě)sql語(yǔ)句。
執(zhí)行同1.2

編輯
執(zhí)行結(jié)果:

編輯
