go-etl

module
v0.1.3 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jun 20, 2023 License: Apache-2.0

README

go-etl

LICENSE Language Build Go Report Card GitHub release GitHub release date Coverage Status GoDoc

go-etl是一个集数据源抽取,转化,加载,同步校验的工具集,提供强大的数据同步,数据转化甚至数据校验的功能。

go-etl将提供的etl能力如下:

  1. 主流数据库的数据抽取以及数据加载的能力,在storage包中实现
  2. 类二维表的数据流的数据抽取以及数据加载的能力,在stream包中实现
  3. 类似datax的数据同步能力,在datax包中实现
  4. 以mysql sql语法为基础的数据筛选、转化能力,在transform包中实现
  5. 数据库间的数据校验能力,在libra包中实现 (目前计划中)

鉴于本人实在精力有限,欢迎大家来提交issue或者加QQ群185188648来讨论go-etl,让我们一起进步!

数据同步工具

本数据数据同步工具以下数据源的同步能力

类型 数据源 Reader(读) Writer(写) 文档
关系型数据库 MySQL/Mariadb/Tidb
Postgres/Greenplum
DB2 LUW
SQL Server
Oracle
无结构流 CSV
XLSX(excel)
数据同步用户手册

使用go-etl数据同步用户手册开始数据同步

数据同步开发宝典

参考go-etl数据同步开发者文档来帮助开发

模块简介

datax

本包将提供类似于阿里巴巴DataX的接口去实现go的etl框架,目前主要实现了job框架内的数据同步能力.

storage
database

目前已经实现了数据库的基础集成,已有mysql和postgresql的实现,如何实现可以查看godoc文档,利用它能非常方便地实现datax数据库间的同步,欢迎大家来提交新的数据同步方式,可以在下面选择新的数据库来同步

stream

主要用于字节流的解析,如文件,消息队列,elasticsearch等,字节流格式可以是cvs,json, xml等

file

主要用于文件的解析,如cvs,excel等

transform

主要用于类sql数据转化,类似百度引擎

tools

工具集用于编译,新增许可证等

datax
build
go generate ./...

发布命令,用于将由开发者开发的reader和writer插件注册到程序中的代码

另外,该命令也会把编译信息如软件版本,git版本,go编译版本和编译时间写入命令行中

plugin

数据源插件模板新增工具,用于新增一个reader或writer模板,配合发布命令使用,减少开发者负担

plugin

数据源插件打包工具

license

用于自动新增go代码文件中许可证

go run tools/license/main.go
libra

主要用于数据库间数据校验

Directories

Path Synopsis
cmd
Package config 提供JSON配置
Package config 提供JSON配置
Package datax 主要离线数据同步框架,框架如下
Package datax 主要离线数据同步框架,框架如下
Package element 提供各个类型的列值,列,记录以及记录通道
Package element 提供各个类型的列值,列,记录以及记录通道
Package schedule 提供资源映射以及任务调度器
Package schedule 提供资源映射以及任务调度器
storage
database
Package database 对实现标准库database/sql的接口的数据库进行封装 本包提供了DB作为数据库连接池来操作数据库 DB可以通过FetchRecord来获得每一行的记录,例如数据库方言名为name,数据库配置文件为conf
Package database 对实现标准库database/sql的接口的数据库进行封装 本包提供了DB作为数据库连接池来操作数据库 DB可以通过FetchRecord来获得每一行的记录,例如数据库方言名为name,数据库配置文件为conf
database/db2
Package db2 实现了db2的数据库方言Dialect,支持db2 10.x+ 对应数据库
Package db2 实现了db2的数据库方言Dialect,支持db2 10.x+ 对应数据库
database/mysql
Package mysql 实现了mysql的数据库方言Dialect,支持mysql 5.6+ 对应数据库 驱动为github.com/go-sql-driver/mysql 数据源Source使用BaseSource来简化实现, 对github.com/go-sql-driver/mysql 驱动进行包装.对于数据库配置,需要和Config一致 表Table使用BaseTable来简化实现,也是基于github.com/go-sql-driver/mysql的 封装,Table实现了FieldAdder的方式去获取列,在ExecParameter中实现写入模式为 replace的repalce into批量数据处理模式,写入模式为insert的插入模式复用 已有的database.InsertParam 列Field使用BaseField来简化实现,其中FieldType采用了原来的sql.ColumnType, 并实现了ValuerGoType 扫描器Scanner使用BaseScanner来简化实现 赋值器Valuer 使用了GoValuer的实现方式
Package mysql 实现了mysql的数据库方言Dialect,支持mysql 5.6+ 对应数据库 驱动为github.com/go-sql-driver/mysql 数据源Source使用BaseSource来简化实现, 对github.com/go-sql-driver/mysql 驱动进行包装.对于数据库配置,需要和Config一致 表Table使用BaseTable来简化实现,也是基于github.com/go-sql-driver/mysql的 封装,Table实现了FieldAdder的方式去获取列,在ExecParameter中实现写入模式为 replace的repalce into批量数据处理模式,写入模式为insert的插入模式复用 已有的database.InsertParam 列Field使用BaseField来简化实现,其中FieldType采用了原来的sql.ColumnType, 并实现了ValuerGoType 扫描器Scanner使用BaseScanner来简化实现 赋值器Valuer 使用了GoValuer的实现方式
database/oracle
Package oracle 实现了oracle的数据库方言Dialect,支持oracle 10.5+ 对应数据库
Package oracle 实现了oracle的数据库方言Dialect,支持oracle 10.5+ 对应数据库
database/postgres
Package postgres 实现了postgres的数据库方言Dialect,支持postgres 8.0+ 对应数据库
Package postgres 实现了postgres的数据库方言Dialect,支持postgres 8.0+ 对应数据库
database/sqlserver
Package sqlserver 实现了sqlserver的数据库方言Dialect,支持mssql 2005+ 对应数据库
Package sqlserver 实现了sqlserver的数据库方言Dialect,支持mssql 2005+ 对应数据库
stream/file
Package file 实现了文件输入流和输出流的框架,可以用于所有类二维表文件输入输出 文件输入流InStreamer框架,可以通过如下方式读取文件
Package file 实现了文件输入流和输出流的框架,可以用于所有类二维表文件输入输出 文件输入流InStreamer框架,可以通过如下方式读取文件
stream/file/compress
Package compress 主要实现了压缩方法
Package compress 主要实现了压缩方法
stream/file/csv
Package csv 主要实现了stream/file的接口
Package csv 主要实现了stream/file的接口
stream/file/xlsx
Package xlsx 主要实现了stream/file的接口
Package xlsx 主要实现了stream/file的接口
tools

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL