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