go语言写的简要数据同步工具详解

 更新时间:2024年07月22日 09:01:35   作者:Breeze0806  
作为go-etl工具的作者,想要安利一下这个小巧的数据同步工具,它在同步百万级别的数据时表现极为优异,基本能在几分钟完成数据同步,这篇文章主要介绍了go语言写的简要数据同步工具,需要的朋友可以参考下

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

  • 框架:框架用于连接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

到此这篇关于go语言写的简要数据同步工具的文章就介绍到这了,更多相关go语言写的简要数据同步工具内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Go语言构建流数据pipeline的示例详解

    Go语言构建流数据pipeline的示例详解

    Go的并发原语可以轻松构建流数据管道,从而高效利用 I/O 和多个 CPU, 本文展示了此类pipelines的示例,强调了操作失败时出现的细微之处,并介绍了干净地处理失败的技术,希望对大家有所帮助
    2024-02-02
  • go protobuf 详解

    go protobuf 详解

    Protobuf是Protocol Buffers的简称,它是Google公司开发的一种数据描述语言,是一种轻便高效的结构化数据存储格式,可以用于结构化数据串行化,或者说序列化,这篇文章主要介绍了protobuf 详解,需要的朋友可以参考下
    2024-01-01
  • golang语言map全方位介绍

    golang语言map全方位介绍

    本文主要介绍了golang语言map全方位介绍,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-01-01
  • 详解Golang中零拷贝的原理以及实践

    详解Golang中零拷贝的原理以及实践

    零拷贝技术相信大家都有所耳闻,但是本文不仅会讲述零拷贝技术的原理,并将从实际代码出发,看看零拷贝技术在golang中的应用,现在让我们开始吧
    2023-07-07
  • Go1.20 arena新特性示例详解

    Go1.20 arena新特性示例详解

    这篇文章主要为大家介绍了Go1.20 arena新特性示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-11-11
  • goframe重写FastAdmin后端实现实例详解

    goframe重写FastAdmin后端实现实例详解

    这篇文章主要为大家介绍了goframe重写FastAdmin后端实现实例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-12-12
  • Go sync WaitGroup使用深入理解

    Go sync WaitGroup使用深入理解

    这篇文章主要为大家介绍了Go sync WaitGroup使用深入理解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-10-10
  • 详解Go语言中数组,切片和映射的使用

    详解Go语言中数组,切片和映射的使用

    Arrays (数组), Slices (切片) 和 Maps (映射) 是常见的一类数据结构。这篇文章将为大家详细介绍一下Go语言中数组,切片和映射的使用,感兴趣的可以学习一下
    2022-07-07
  • Go Excelize API源码阅读SetSheetViewOptions示例解析

    Go Excelize API源码阅读SetSheetViewOptions示例解析

    这篇文章主要为大家介绍了Go-Excelize API源码阅读SetSheetViewOptions示例解析,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-08-08
  • golang Gorm与数据库完整性约束详解

    golang Gorm与数据库完整性约束详解

    这篇文章主要介绍了golang Gorm与数据库完整性约束详解,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-12-12

最新评论