go-etl

module
v0.1.0 Latest Latest
Warning

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

Go to latest
Published: Dec 13, 2022 License: Apache-2.0

README

go-etl

Go Report CardGoDocLICENSEBuild StatusCoverage Status

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框架内的数据同步能力,监控等功能还未实现.

plan
  • 实现db2数据库reader/writer插件
  • 实现sql server数据库reader/writer插件
  • 实现oracle数据库reader/writer插件
  • 实现cvs文件reader/writer插件
  • 实现xlsx文件reader/writer插件
  • 实现监控模块
  • 实现流控模块
  • 实现关系型数据库入库重试保证数据不丢失功能
  • 实现关系型数据库入库断点续传
storage
database

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

plan
  • 实现db2数据库的dialect
  • 实现sql server数据库的dialect
  • 实现oracle数据库的dialect
stream

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

file
plan
  • 实现文件流的数据传输框架
  • 单元测试文件流的数据传输框架
  • 实现cvs文件字节流的数据传输框架
  • 单元测试cvs文件字节流的数据传输框架
  • 实现xlsx文件字节流的数据传输框架
  • 单元测试xlsx文件字节流的数据传输框架
mq
plan

暂无时间安排计划,欢迎来实现

elasticsearch
plan

暂无时间安排计划,欢迎来实现

transform

主要用于类sql数据转化

plan
  • 引入tidb数据库的mysql解析能力
  • 引入tidb数据库的mysql函数计算能力
  • 运用mysql解析能力和mysql函数计算能力实现数据转化能力
tools

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

datax
build

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

plugin

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

license

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

go run tools/license/main.go
libra

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

Directories

Path Synopsis
cmd
datax command
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
datax/build command
datax/plugin command
license command

Jump to

Keyboard shortcuts

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