go語言寫的簡要數(shù)據(jù)同步工具詳解
go語言寫的簡要數(shù)據(jù)同步工具
go-etl工具
作為go-etl
工具的作者,想要安利一下這個小巧的數(shù)據(jù)同步工具,它在同步百萬級別的數(shù)據(jù)時表現(xiàn)極為優(yōu)異,基本能在幾分鐘完成數(shù)據(jù)同步。
1.它能干什么的?
go-etl是一個數(shù)據(jù)同步工具集,目前支持MySQL,postgres,oracle,SQL SERVER,DB2等主流關(guān)系型數(shù)據(jù)庫以及csv,xlsx文件之間的數(shù)據(jù)同步,在同步百萬級別的數(shù)據(jù)時表現(xiàn)極為優(yōu)異,基本能在幾分鐘完成數(shù)據(jù)同步。
2.怎么獲取它?
可以在最新發(fā)布版本下載到windows或者linux操作系統(tǒng)的64位版本二進(jìn)制程序
如圖所示第1個是不包含db2功能的linux二進(jìn)制程序,第2個是linux版本的,第3個是windows版本的
3.怎么使用它?
go-etl datax
二進(jìn)制程序是一款即插即用的程序,它的唯一難點是配置導(dǎo)入配置文件,配置它的配置文件我們需要理解它的工作原理
3.1 工作原理
如上圖所示go-etl datax
將數(shù)據(jù)從源數(shù)據(jù)源同步到目的數(shù)據(jù)源,
讀取器:
reader
為數(shù)據(jù)采集模塊,負(fù)責(zé)采集數(shù)據(jù)源的數(shù)據(jù),將數(shù)據(jù)發(fā)送給框架。寫入器:
writer
為數(shù)據(jù)寫入模塊,負(fù)責(zé)不斷向框架取數(shù)據(jù),并將數(shù)據(jù)寫入到目的端。框架:框架用于連接
reader
和writer
,作為兩者的數(shù)據(jù)傳輸通道,并處理緩沖,流控,并發(fā),數(shù)據(jù)轉(zhuǎn)換等核心技術(shù)問題
3.2 配置數(shù)據(jù)同步文件
通過工作原理,需要配置reader
和writer
才能使go-etl datax
準(zhǔn)確地開始工作,本次以csv
和mysql
之間的數(shù)據(jù)同步為例, 以下是完整的配置文件,但僅需要關(guān)注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
,表明其源數(shù)據(jù)源的類型,再例如如mysql
的讀取器為mysqlreader
,接著留意到的時reader
的參數(shù),path
代表csv文件的存儲位置,encoding
為csv文件的字符集。
這里再看writer
,首先留意到的時reader
的名字是mysqlreader
,表明其目的數(shù)據(jù)源的類型,再例如csv
的讀取器為mysqlreader
,接著留意到的時writer
的參數(shù),需要配置的是username
,password
,connection
的url
和table
,用戶名密碼無需多言,這里要重點講講url
,基本配置格式:tcp(ip:port)/db,ip:port代表mysql數(shù)據(jù)庫的IP地址和端口,db表示要默認(rèn)連接的數(shù)據(jù)庫,table
是需要寫入的表信息。
3.3 運行程序?qū)霐?shù)據(jù)
將上述配置命名為config.json
,將其和datax
以及待導(dǎo)入的數(shù)據(jù)文件split.csv
放到同一目錄下,在windows中使用命令行或者linux中使用終端執(zhí)行以下命令
datax
3.4 批量寫入數(shù)據(jù)
3.4.1 源目的配置向?qū)募?/h5>
源目的配置向?qū)募莄sv文件,每行配置可以配置如下:
path[table],path[table]
每一列可以是路徑或者是表名,注意所有的表要配置庫名或者模式名,需要在數(shù)據(jù)源配置文件配置。
3.4.2 批量生成數(shù)據(jù)配置集和執(zhí)行腳本
在windows中使用命令行或者linux中使用終端執(zhí)行以下命令
datax -c tools/testData/xlsx.json -w tools/testData/wizard.csv
-c 指定數(shù)據(jù)源配置文件 -w 指定源目的配置向?qū)募?/p>
執(zhí)行結(jié)果會在數(shù)據(jù)源配置文件目錄文件生成源目的配置向?qū)募袛?shù)的配置集,分別以指定數(shù)據(jù)源配置文件1.json,指定數(shù)據(jù)源配置文件2.json,...,指定數(shù)據(jù)源配置文件[n].json的配置集。
另外,在當(dāng)前目錄會生成執(zhí)行腳本run.bat或者run.sh。
3.4.3 運行腳本
windows中使用命令行即可
run.bat
linux中使用終端執(zhí)行即可
run.sh
到此這篇關(guān)于go語言寫的簡要數(shù)據(jù)同步工具的文章就介紹到這了,更多相關(guān)go語言寫的簡要數(shù)據(jù)同步工具內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- go語言寫的簡要數(shù)據(jù)同步工具詳解
- MySQL數(shù)據(jù)實時同步到MongoDB的實踐分享
- mongodb主從同步配置實戰(zhàn)詳細(xì)教程(建議收藏)
- Django 解決阿里云部署同步數(shù)據(jù)庫報錯的問題
- 解決django同步數(shù)據(jù)庫的時候app models表沒有成功創(chuàng)建的問題
- Django 數(shù)據(jù)庫同步操作技巧詳解
- 詳解MongoDB數(shù)據(jù)還原及同步解決思路
- django1.11.1 models 數(shù)據(jù)庫同步方法
- django 刪除數(shù)據(jù)庫表后重新同步的方法
- node.js將MongoDB數(shù)據(jù)同步到MySQL的步驟
相關(guān)文章
Go調(diào)用opencv實現(xiàn)圖片矯正的代碼示例
這篇文章主要為大家詳細(xì)介紹了Go調(diào)用opencv實現(xiàn)圖片矯正的代碼示例,文中的示例代碼簡潔易懂,感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下2023-09-09深入了解Go語言中database/sql是如何設(shè)計的
在?Go?語言中內(nèi)置了?database/sql?包,它只對外暴露了一套統(tǒng)一的編程接口,便可以操作不同數(shù)據(jù)庫,那么database/sql?是如何設(shè)計的呢,下面就來和大家簡單聊聊吧2023-07-07使用Go和Gorm實現(xiàn)讀取SQLCipher加密數(shù)據(jù)庫
本文檔主要描述通過Go和Gorm實現(xiàn)生成和讀取SQLCipher加密數(shù)據(jù)庫以及其中踩的一些坑,文章通過代碼示例講解的非常詳細(xì), 對大家的學(xué)習(xí)或工作有一定的幫助,需要的朋友可以參考下2024-06-06