MysqlReader
MysqlReader插件实现了从Mysql读取数据。在底层实现上,MysqlReader通过JDBC连接远程Mysql数据库,并执行相应的sql语句将数据从mysql库中SELECT出来。
不同于其他关系型数据库,MysqlReader不支持FetchSize.
目前MysqlReader支持大部分Mysql类型,但也存在部分个别类型没有支持的情况。
MysqlReader针对Mysql类型转换列表:
实现原理
简而言之,MysqlReader通过JDBC连接器连接到远程的Mysql数据库,并根据用户配置的信息生成查询SELECT SQL语句,然后发送到远程Mysql数据库,并将该SQL执行返回结果使用DataX自定义的数据类型拼装为抽象的数据集,并传递给下游Writer处理。
对于用户配置Table、Column、Where的信息,MysqlReader将其拼接为SQL语句发送到Mysql数据库;对于用户配置querySql信息,MysqlReader直接将其发送到Mysql数据库。
类型转换
为了规范源端和目的端类型转换操作,保证数据不失真,DataX支持六种内部数据类型:
Long:定点数(Int、Short、Long、BigInteger等)。
Double:浮点数(Float、Double、BigDecimal(无限精度)等)。
String:字符串类型,底层不限长,使用通用字符集(Unicode)。
Date:日期类型。
Bool:布尔值。
Bytes:二进制,可以存放诸如MP3等非结构化数据。
对应地,有DateColumn、LongColumn、DoubleColumn、BytesColumn、StringColumn和BoolColumn六种Column的实现。