番外篇: go语言写的简要数据同步工具
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
番外篇: go语言写的简要数据同步工具的更多相关文章
- (八)羽夏看C语言——C番外篇
写在前面 此系列是本人一个字一个字码出来的,包括示例和实验截图.本人非计算机专业,可能对本教程涉及的事物没有了解的足够深入,如有错误,欢迎批评指正. 如有好的建议,欢迎反馈.码字不易,如果本篇文章 ...
- (九)羽夏看C语言——C++番外篇
写在前面 此系列是本人一个字一个字码出来的,包括示例和实验截图.本人非计算机专业,可能对本教程涉及的事物没有了解的足够深入,如有错误,欢迎批评指正. 如有好的建议,欢迎反馈.码字不易,如果本篇文章 ...
- 【番外篇】ASP.NET MVC快速入门之免费jQuery控件库(MVC5+EF6)
目录 [第一篇]ASP.NET MVC快速入门之数据库操作(MVC5+EF6) [第二篇]ASP.NET MVC快速入门之数据注解(MVC5+EF6) [第三篇]ASP.NET MVC快速入门之安全策 ...
- 给深度学习入门者的Python快速教程 - 番外篇之Python-OpenCV
这次博客园的排版彻底残了..高清版请移步: https://zhuanlan.zhihu.com/p/24425116 本篇是前面两篇教程: 给深度学习入门者的Python快速教程 - 基础篇 给深度 ...
- C++雾中风景番外篇:理解C++的复杂声明与声明解析
在学习C系列语言的过程之中,理解C/C++的复杂声明一直是初学者很困扰的问题.笔者初学之时也深受困扰,对很多规则死记硬背.后续在阅读<C专家编程>之后,尝试在编译器的角度来理解C/C++的 ...
- 我的OI生涯番外篇
番外篇 转眼间我学oi已经一年了,可回头想想这一年来的收获也没有什么,大部分时间都荒废掉了. 下半年开学后,学物竞的王洋转来了我们电竞,虽然他之前是我的同班同学但也没怎么交流过. 这下我们又成为了oi ...
- electron教程(番外篇一): 开发环境及插件, VSCode调试, ESLint + Google JavaScript Style Guide代码规范
我的electron教程系列 electron教程(一): electron的安装和项目的创建 electron教程(番外篇一): 开发环境及插件, VSCode调试, ESLint + Google ...
- #3使用html+css+js制作网页 番外篇 使用python flask 框架 (I)
#3使用html+css+js制作网页 番外篇 使用python flask 框架(I 第一部) 0. 本系列教程 1. 准备 a.python b. flask c. flask 环境安装 d. f ...
- 渗透测试思路 - CTF(番外篇)
渗透测试思路 Another:影子 (主要记录一下平时渗透的一些小流程和一些小经验) CTF(番外篇) 笔者是一个WEB狗,更多的是做一些WEB类型题目,只能怪笔者太菜,哭~~ 前言 本篇 ...
- x64 番外篇——知识铺垫
写在前面 此系列是本人一个字一个字码出来的,包括示例和实验截图.由于系统内核的复杂性,故可能有错误或者不全面的地方,如有错误,欢迎批评指正,本教程将会长期更新. 如有好的建议,欢迎反馈.码字不易, ...
随机推荐
- 表单设计——《HTML5 CSS3从入门到精通》
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- k8s——api
api概述 api是k8s系统的重要部分,组件之间的所有操作和通信均由apiserver处理的rest api调用,大多数情况下,api定义和实现都符合标准的http rest格式,可以通过kubct ...
- 使用Python实现深度学习模型:序列到序列模型(Seq2Seq)
本文分享自华为云社区<使用Python实现深度学习模型:序列到序列模型(Seq2Seq)>,作者: Echo_Wish. 序列到序列(Seq2Seq)模型是一种深度学习模型,广泛应用于机器 ...
- Cage 字符串听课笔记
困困困! KMP 注意到 KMP 的复杂度是均摊的,那么是否可以绕开? 注意到 KMP 实际上一个串的 ACAM,那么考虑可以类似的,在加入一个字符的同时维护 ACAM(考虑 ACAM 的构建过程,前 ...
- INFINI Console 与华为鲲鹏完成产品兼容互认证
何为华为鲲鹏认证 华为鲲鹏认证是华为云围绕鲲鹏云服务(含公有云.私有云.混合云.桌面云)推出的一项合作伙伴计划,旨在为构建持续发展.合作共赢的鲲鹏生态圈,通过整合华为的技术.品牌资源,与合作伙伴共享商 ...
- UDP端口探活的那些细节
一 背景 商业客户反馈用categraf的net_response插件配置了udp探测, 遇到报错了,如图 udp是无连接的,无法用建立连接的形式判断端口. 插件最初的设计是需要配置udp的发送字符 ...
- Javascript高级程序设计第五章 | ch5 | 阅读笔记
基本引用类型 Date 在不给定时间的情况下创建Date实例,创建的对象将保存当前的日期和时间. 要基于其他时间创建Date对象,必须传入其毫秒时表示 Date.parse() 月/日/年(5/21/ ...
- word文档生成视频,自动配音、背景音乐、自动字幕,另类创作工具
简介 不同于别的视频创作工具,这个工具创作视频只需要在word文档中打字,插入图片即可.完事后就能获得一个带有配音.字幕.背景音乐.视频特效滤镜的优美作品. 这种不要门槛,没有技术难度的视频创作工具, ...
- JSON文件存储
JSON 文件存储 JSON,全称为 JavaScript Object Notation, 也就是 JavaScript 对象标记,通过对象和数组的组合来表示数据,构造简洁但是结构化程度非常高,是一 ...
- k8s中的亲和性、污点与容忍(调度到不同的宿主机)
本文章并未经过严格实践,如有错误,辛苦指出. 背景 服务需要多副本,来保证高可靠.多活. 那么问题来了,假如这些副本都在同一个宿主机上,或者同一个交换机下-宿主机.交换机其中一项坏掉了,那多副本还有什 ...