# MySQL Reader
MysqlReader 插件实现了从Mysql读取数据
## 示例
我们在 MySQL 的 test 库上创建如下表,并插入一条记录
`sql
--8<-- "sql/mysql.sql"
`
下面的配置是读取该表到终端的作业:
=== "job/mysql2stream.json"
`json --8<-- "jobs/mysqlreader.json" `
将上述配置文件保存为 job/mysql2stream.json
### 执行采集命令
执行以下命令进行数据采集
`shell
bin/addax.sh job/mysql2stream.json
`
## 参数说明
[1]: http://dev.mysql.com/doc/connector-j/en/connector-j-reference-configuration-properties.html
### driver
当前 Addax 采用的 MySQL JDBC 驱动为 8.0 以上版本,驱动类名使用的 com.mysql.cj.jdbc.Driver,而不是 com.mysql.jdbc.Driver。 如果你需要采集的 MySQL 服务低于 5.6,需要使用到 Connector/J 5.1 驱动,则可以采取下面的步骤:
替换插件内置的驱动
rm -f plugin/reader/mysqlreader/lib/mysql-connector-java-*.jar
拷贝老的驱动到插件目录
cp mysql-connector-java-5.1.48.jar plugin/reader/mysqlreader/lib/
指定驱动类名称
在你的 json 文件类,配置 "driver": "com.mysql.jdbc.Driver"
## 类型转换
目前MysqlReader支持大部分Mysql类型,但也存在部分个别类型没有支持的情况,请注意检查你的类型。
下面列出MysqlReader针对Mysql类型转换列表:
请注意:
除上述罗列字段类型外,其他类型均不支持
tinyint(1) Addax视作为整形
year Addax视作为字符串类型
bit Addax属于未定义行为
### 数据库编码问题
Mysql本身的编码设置非常灵活,包括指定编码到库、表、字段级别,甚至可以均不同编码。优先级从高到低为字段、表、库、实例。我们不推荐数据库用户设置如此混乱的编码,最好在库级别就统一到UTF-8。
MysqlReader底层使用JDBC进行数据抽取,JDBC天然适配各类编码,并在底层进行了编码转换。因此MysqlReader不需用户指定编码,可以自动获取编码并转码。
对于Mysql底层写入编码和其设定的编码不一致的混乱情况,MysqlReader对此无法识别,对此也无法提供解决方案,对于这类情况,导出有可能为乱码。