go-etl工具
作為go-etl
工具的作者,想要安利一下這個小巧的資料同步工具,它在同步百萬級別的資料時表現極為優異,基本能在幾分鐘完成資料同步。
1.它能幹什麼的?
go-etl是一個資料同步工具集,目前支援MySQL,postgres,oracle,SQL SERVER,DB2等主流關係型資料庫以及csv,xlsx檔案之間的資料同步,在同步百萬級別的資料時表現極為優異,基本能在幾分鐘完成資料同步。
2.怎麼獲取它?
可以在最新發布版本下載到windows或者linux作業系統的64位版本二進位制程式
如圖所示第1個是不包含db2功能的linux二進位制程式,第2個是linux版本的,第3個是windows版本的
3.怎麼使用它?
go-etl datax
二進位制程式是一款即插即用的程式,它的唯一難點是配置匯入配置檔案,配置它的配置檔案我們需要理解它的工作原理
3.1 工作原理
如上圖所示go-etl datax
將資料從源資料來源同步到目的資料來源,
-
讀取器:
reader
為資料採集模組,負責採集資料來源的資料,將資料傳送給框架。 -
寫入器:
writer
為資料寫入模組,負責不斷向框架取資料,並將資料寫入到目的端。 -
框架:框架用於連線
reader
和writer
,作為兩者的資料傳輸通道,並處理緩衝,流控,併發,資料轉換等核心技術問題
3.2 配置資料同步檔案
透過工作原理,需要配置reader
和writer
才能使go-etl datax
準確地開始工作,本次以csv
和mysql
之間的資料同步為例, 以下是完整的配置檔案,但僅需要關注job.content
即可
{
"core" : {
"container": {
"job":{
"id": 1,
"sleepInterval":100
}
}
},
"job":{
"content":[
{
"reader":{
"name": "csvreader",
"parameter": {
"path":["split.csv"],
"encoding":"utf-8"
}
},
"writer":{
"name": "mysqlwriter",
"parameter": {
"username": "root",
"password": "123456",
"writeMode": "insert",
"column": ["*"],
"connection": {
"url": "tcp(192.168.15.130:3306)/mysql",
"table": {
"db":"source",
"name":"split"
}
},
"batchTimeout": "1s",
"batchSize":1000
}
},
"transformer":[]
}
],
"setting":{
"speed":{
"byte":0,
"record":1024,
"channel":4
}
}
}
}
這裡先看reader
,首先留意到的時reader
的名字是csvreader
,表明其源資料來源的型別,再例如如mysql
的讀取器為mysqlreader
,接著留意到的時reader
的引數,path
代表csv檔案的儲存位置,encoding
為csv檔案的字符集。
這裡再看writer
,首先留意到的時reader
的名字是mysqlreader
,表明其目的資料來源的型別,再例如csv
的讀取器為mysqlreader
,接著留意到的時writer
的引數,需要配置的是username
,password
,connection
的url
和table
,使用者名稱密碼無需多言,這裡要重點講講url
,基本配置格式:tcp(ip:port)/db,ip:port代表mysql資料庫的IP地址和埠,db表示要預設連線的資料庫,table
是需要寫入的表資訊。
3.3 執行程式匯入資料
將上述配置命名為config.json
,將其和datax
以及待匯入的資料檔案split.csv
放到同一目錄下,在windows中使用命令列或者linux中使用終端執行以下命令
datax
3.4 批次寫入資料
3.4.1 源目的配置嚮導檔案
源目的配置嚮導檔案是csv檔案,每行配置可以配置如下:
path[table],path[table]
每一列可以是路徑或者是表名,注意所有的表要配置庫名或者模式名,需要在資料來源配置檔案配置。
3.4.2 批次生成資料配置集和執行指令碼
在windows中使用命令列或者linux中使用終端執行以下命令
datax -c tools/testData/xlsx.json -w tools/testData/wizard.csv
-c 指定資料來源配置檔案 -w 指定源目的配置嚮導檔案。
執行結果會在資料來源配置檔案目錄檔案生成源目的配置嚮導檔案行數的配置集,分別以指定資料來源配置檔案1.json,指定資料來源配置檔案2.json,...,指定資料來源配置檔案[n].json的配置集。
另外,在當前目錄會生成執行指令碼run.bat或者run.sh。
3.4.3 執行指令碼
windows中使用命令列即可
run.bat
linux中使用終端執行即可
run.sh