go語言寫的簡要數據同步工具詳解
go語言寫的簡要數據同步工具
go-etl工具
作為go-etl工具的作者,想要安利一下這個小巧的數據同步工具,它在同步百萬級別的數據時表現極為優(yōu)異,基本能在幾分鐘完成數據同步。
1.它能干什么的?

go-etl是一個數據同步工具集,目前支持MySQL,postgres,oracle,SQL SERVER,DB2等主流關系型數據庫以及csv,xlsx文件之間的數據同步,在同步百萬級別的數據時表現極為優(yōu)異,基本能在幾分鐘完成數據同步。
2.怎么獲取它?
可以在最新發(fā)布版本下載到windows或者linux操作系統(tǒng)的64位版本二進制程序

如圖所示第1個是不包含db2功能的linux二進制程序,第2個是linux版本的,第3個是windows版本的
3.怎么使用它?
go-etl datax二進制程序是一款即插即用的程序,它的唯一難點是配置導入配置文件,配置它的配置文件我們需要理解它的工作原理
3.1 工作原理

如上圖所示go-etl datax將數據從源數據源同步到目的數據源,
讀取器:
reader為數據采集模塊,負責采集數據源的數據,將數據發(fā)送給框架。寫入器:
writer為數據寫入模塊,負責不斷向框架取數據,并將數據寫入到目的端。框架:框架用于連接
reader和writer,作為兩者的數據傳輸通道,并處理緩沖,流控,并發(fā),數據轉換等核心技術問題
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中使用終端執(zhí)行以下命令
datax
3.4 批量寫入數據
3.4.1 源目的配置向導文件
源目的配置向導文件是csv文件,每行配置可以配置如下:
path[table],path[table]
每一列可以是路徑或者是表名,注意所有的表要配置庫名或者模式名,需要在數據源配置文件配置。
3.4.2 批量生成數據配置集和執(zhí)行腳本
在windows中使用命令行或者linux中使用終端執(zhí)行以下命令
datax -c tools/testData/xlsx.json -w tools/testData/wizard.csv
-c 指定數據源配置文件 -w 指定源目的配置向導文件。
執(zhí)行結果會在數據源配置文件目錄文件生成源目的配置向導文件行數的配置集,分別以指定數據源配置文件1.json,指定數據源配置文件2.json,...,指定數據源配置文件[n].json的配置集。
另外,在當前目錄會生成執(zhí)行腳本run.bat或者run.sh。
3.4.3 運行腳本
windows中使用命令行即可
run.bat
linux中使用終端執(zhí)行即可
run.sh
到此這篇關于go語言寫的簡要數據同步工具的文章就介紹到這了,更多相關go語言寫的簡要數據同步工具內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
Go使用context控制協(xié)程取消的實戰(zhàn)案例
在并發(fā)編程中,合理地控制協(xié)程的生命周期是保證程序穩(wěn)定性和資源可控使用的關鍵,Go語言標準庫中的context包正是為了解決這一問題而生,它為我們提供了取消信號、超時控制、請求作用域的值傳遞等功能,本文將通過一個實際案例,演示如何使用context控制協(xié)程的取消2025-08-08

