MysqlReader插件文档
快速介绍
MysqlReader插件实现了从mysql数据库读取数据。在底层实现上,MysqlReader通过github.com/go-sql-driver/mysql以及database/sql连接远程Mysql数据库,并执行相应的sql语句将数据从mysql库中查询出来。
实现原理
MysqlReader通过github.com/go-sql-driver/mysql连接远程Mysql数据库,并根据用户配置的信息生成查询SQL语句,然后发送到远程Mysql数据库,并将该SQL执行返回结果使用go-etl自定义的数据类型拼装为抽象的数据集,并传递给下游Writer处理。
MysqlReader通过使用rdbmreader中定义的查询流程调用go-etl自定义的storage/database的DBWrapper来实现具体的查询。DBWrapper封装了database/sql的众多接口,并且抽象出了数据库方言Dialect。其中Mysql采取了storage/database/mysql实现的Dialect。
功能说明
配置样例
配置一个从Mysql数据库同步抽取数据到本地的作业:
{
"job":{
"content":[
{
"reader":{
"name": "mysqlreader",
"parameter": {
"username": "root",
"password": "123456",
"column": ["*"],
"connection": {
"url": "tcp(192.168.0.1:3306)/mysql?parseTime=false",
"table": {
"db":"source",
"name":"type_table"
}
},
"where": ""
}
}
}
]
}
}
参数说明
url
- 描述 主要用于配置对端连接信息。基本配置格式:tcp(ip:port)/db,ip:port代表mysql数据库的IP地址和端口,db表示要默认连接的数据库,和mysql的连接配置信息基本相同,只是将用户名和密码从连接配置信息提出,方便之后对这些信息加密。
- 必选:是
- 默认值: 无
username
- 描述 主要用于配置mysql数据库的用户
- 必选:是
- 默认值: 无
password
- 描述 主要用于配置mysql数据库的密码
- 必选:是
- 默认值: 无
table
描述mysql表信息
db
- 描述 主要用于配置mysql表的数据库名
- 必选:是
- 默认值: 无
name
- 描述 主要用于配置mysql表的表名
- 必选:是
- 默认值: 无
column
-
描述:所配置的表中需要同步的列名集合,使用JSON的数组描述字段信息。用户使用*代表默认使用所有列配置,例如["*"]。
支持列裁剪,即列可以挑选部分列进行导出。
支持列换序,即列可以不按照表schema信息进行导出。
支持常量配置,用户需要按照Mysql SQL语法格式: ["id", "table", "1", "'bazhen.csy'", "null", "to_char(a + 1)", "2.3" , "true"] id为普通列名,table为包含保留在的列名,1为整形数字常量,'bazhen.csy'为字符串常量,null为空指针,to_char(a + 1)为表达式,2.3为浮点数,true为布尔值。
-
必选:是
-
默认值: 无
where
- 描述 主要用于配置select的where条件
- 必选:否
- 默认值: 无
类型转换
目前MysqlReader支持大部分Mysql类型,但也存在部分个别类型没有支持的情况,请注意检查你的类型。
下面列出MysqlReader针对Mysql类型转换列表:
| go-etl的类型 |
mysql数据类型 |
| bigInt |
int, tinyint, smallint, mediumint, bigint,year |
| decimal |
float, double, decimal |
| string |
varchar, char, tinytext, text, mediumtext, longtext |
| time |
date, datetime, timestamp, time |
| bytes |
tinyblob, mediumblob, blob, longblob, varbinary,bit |
性能报告
待测试
约束限制
数据库编码问题
目前仅支持utf8字符集
FAQ