首页 > 其他分享 >番外篇: go语言写的简要数据同步工具

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

时间:2024-07-21 14:29:11浏览次数:8  
标签:简要 配置文件 数据 数据源 配置 go csv 番外篇

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,csv,番外篇
From: https://www.cnblogs.com/onlyac/p/18314434

相关文章

  • Pixelmator Pro 3.6.5 Archipelago (macOS Universal) - 专业图像编辑工具
    PixelmatorPro3.6.5Archipelago(macOSUniversal)-专业图像编辑工具Photoshop的卓越替代软件请访问原文链接:https://sysin.org/blog/pixelmator-pro-3/,查看最新版。原创作品,转载请保留出处。作者主页:sysin.orgPixelmatorPro真正基于AppleMac技术构建,不像某些异类......
  • Django通过主机ip访问
    我自己一个人的课题,所以没有使用项目管理软件,也没有给被人演示过。有一天突然要演示,不再通过127.0.0.1访问,需要使用本机ip访问,此时报forbidden错误。两台机器同一局域网,能ping通,不存在子网穿透问题。解决方式:1.修改Django项目中的settings.py文件:ALLOWED_HOSTS=[]修改为A......
  • 解析Java中1000个常用类:GregorianCalendar类,你学会了吗?
    在线工具站推荐一个程序员在线工具站:程序员常用工具(http://cxytools.com),有时间戳、JSON格式化、文本对比、HASH生成、UUID生成等常用工具,效率加倍嘎嘎好用。程序员资料站推荐一个程序员编程资料站:程序员的成长之路(http://cxyroad.com),收录了一些列的技术教程、各大面试专......
  • 解析Java中1000个常用类:GregorianCalendar类,你学会了吗?
    在线工具站推荐一个程序员在线工具站:程序员常用工具(http://cxytools.com),有时间戳、JSON格式化、文本对比、HASH生成、UUID生成等常用工具,效率加倍嘎嘎好用。程序员资料站推荐一个程序员编程资料站:程序员的成长之路(http://cxyroad.com),收录了一些列的技术教程、各大面......
  • 有人可以检查我的 Django 代码有什么问题吗?
    所以,我刚刚在Django中做了一个CRUD,现在我想测试它,创建和删除测试正在cmd中使用这些命令:创造curl-XPOSThttp://localhost:8000/user/-H"Content-Type:application/json"-d"{"用户名":"john_doe","电子邮件":"[email protected]","名字”:......
  • Django makemessages 重复翻译
    我有现有的.po文件,但我仍在构建我的项目,因此添加了新的翻译字符串,并且一些已添加的翻译字符串正在更改位置。要更新我正在运行的.po文件django-adminmakemessages-len当我打开文件时我发现相同的翻译重复了很多次:#:_templates/admin-users/base/partials/sid......
  • 当我注销时,我得到一个空白页面 - Django 5
    因此,当我想注销用户时,它会显示一个白色的空白页面http://127.0.0.1:8000/accounts/logout/我正在使用快捷方式重定向到设置中的下一页.py和我测试了使用管理面板注销,它工作正常。settings.py...LOGIN_REDIRECT_URL='index'LOGOUT_REDIRECT_URL='......
  • Google OAuth2 redirect_uri_mismatch 在生产中出现错误,但在本地工作
    我正在开发一个项目,需要使用OAuth2身份验证更新组织的GoogleDrive令牌。我的代码在本地计算机上运行良好,但是当我将其部署到服务器时,遇到无效的错误redirect_url。这是我的代码的相关部分:defupdate_drive_gtoken(data:schema.UpdateDriveToken,sql:Session,......
  • 从原点 *** 获取 *** 的访问已被 CORS 策略阻止:无“Access-Control-Allow-Origin” -
    我正在尝试将AuthADFS与Django应用程序和Angular集成,但我不断收到CORS错误。我尝试了一切,但似乎没有任何效果。AccesstoXMLHttpRequestat'https://login.microsoftonline.com/{your-tenant-id}/oauth2/v2.0/authorize?client_id={your-client-id}&response_type=......
  • 深入理解Django:中间件与信号处理的艺术
    引言在当今的Web开发领域,Django以其强大的功能、简洁的代码结构和高度的可扩展性,已成为众多开发者的首选框架。Django不仅是一个内容管理系统,更是一个全面的框架,它提供了一套完整的解决方案,包括ORM、模板引擎、URL路由系统和强大的管理后台,使得开发者能够快速构建高质量的Web......