首页 星云 工具 资源 星选 资讯 热门工具
:

PDF转图片 完全免费 小红书视频下载 无水印 抖音视频下载 无水印 数字星空

番外2: go语言写的简要数据同步工具

编程知识
2024年07月21日 13:31

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为数据写入模块,负责不断向框架取数据,并将数据写入到目的端。

  • 框架:框架用于连接readerwriter,作为两者的数据传输通道,并处理缓冲,流控,并发,数据转换等核心技术问题

3.2 配置数据同步文件

通过工作原理,需要配置readerwriter才能使go-etl datax准确地开始工作,本次以csvmysql之间的数据同步为例, 以下是完整的配置文件,但仅需要关注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,connectionurltable,用户名密码无需多言,这里要重点讲讲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
From:https://www.cnblogs.com/onlyac/p/18314434
本文地址: http://www.shuzixingkong.net/article/245
0评论
提交 加载更多评论
其他文章 数据库的性能调优:如何正确的使用索引?
在当今的数据驱动时代,数据库的性能优化成为每个开发者和数据库管理员必须掌握的技能之一。而在众多优化手段中,索引的使用无疑是最为重要和有效的。然而,索引的滥用或误用不仅不会提升性能,反而可能带来额外的开销。那么,如何正确地使用索引,才能真正提升数据库性能呢? 为什么有时我们精心创建的索引却没有带来预期
数据库的性能调优:如何正确的使用索引? 数据库的性能调优:如何正确的使用索引? 数据库的性能调优:如何正确的使用索引?
创客13星零售商城系统漏洞审计(0day)任意文件上传+SQL注入+SSRF
创客13星零售商城系统漏洞审计3处(0day) 任意文件上传+SQL注入+SSRF
创客13星零售商城系统漏洞审计(0day)任意文件上传+SQL注入+SSRF 创客13星零售商城系统漏洞审计(0day)任意文件上传+SQL注入+SSRF 创客13星零售商城系统漏洞审计(0day)任意文件上传+SQL注入+SSRF
Packer构建openStack镜像
目录使用Packer自动化构建镜像 使用Packer自动化构建镜像 openstack插件安装:OpenStack | Integrations | Packer | HashiCorp Developer openstack插件用法示例:OpenStack Builder | Integratio
Packer构建openStack镜像 Packer构建openStack镜像
在.NET Web API设置响应输出Json数据格式常用的两种方式
前言 在ASP.NET Core Web API中设置响应输出Json数据格式常用以下两种方式:可以通过添加System.Text.Json或Newtonsoft.JsonJSON序列化和反序列化库在应用程序中全局设置接口响应的Json数据格式。 注意:本文示例使用的是新的Minimal API模式
在.NET Web API设置响应输出Json数据格式常用的两种方式 在.NET Web API设置响应输出Json数据格式常用的两种方式 在.NET Web API设置响应输出Json数据格式常用的两种方式
一文揭开JDK21虚拟线程的神秘面纱
虚拟线程快速体验 环境:JDK21 + IDEA public static void main(String[] args) { try (var executor = Executors.newVirtualThreadPerTaskExecutor()) { IntStream.range(0
Nuxt 使用指南:掌握 useNuxtApp 和运行时上下文
title: Nuxt 使用指南:掌握 useNuxtApp 和运行时上下文 date: 2024/7/21 updated: 2024/7/21 author: cmdragon excerpt: 摘要:“Nuxt 使用指南:掌握 useNuxtApp 和运行时上下文”介绍了Nuxt 3中useN
Nuxt 使用指南:掌握 useNuxtApp 和运行时上下文 Nuxt 使用指南:掌握 useNuxtApp 和运行时上下文
深入探究 Golang 反射:功能与原理及应用
Go 出于通用性的考量,提供了反射这一功能。借助反射功能,我们可以实现通用性更强的函数,传入任意的参数,在函数内通过反射动态调用参数对象的方法并访问它的属性。本文将深入探讨Golang反射包reflect的功能和原理。同时,我们学习某种东西,一方面是为了实践运用,另一方面则是出于功利性面试的目的。所
深入探究 Golang 反射:功能与原理及应用 深入探究 Golang 反射:功能与原理及应用 深入探究 Golang 反射:功能与原理及应用
设计模式之观察者模式(学习笔记)
定义 观察者模式是一种行为型设计模式,它定义了一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都会收到通知并自动更新。这种模式用于实现对象之间的解耦,使得一个对象的变化可以通知并更新多个依赖对象,而无需直接引用它们。 为什么使用观察者模式? 解耦 观察者模式将观察者(Observ