快速介绍
组成介绍
读写插件由RDBMSWriter和RDBMSReader两部分组成
实现功能
实现关系型数据库的读写
实现原理
RDBMSReader通过JDBC连接器连接到远程的RDBMS数据库,并根据用户配置的信息生成查询SELECT SQL语句并发送到远程RDBMS数据库,并将该SQL执行返回结果使用DataX自定义的数据类型拼装为抽象的数据集,并传递给下游RDBMSWriter处理。
RDBMSWriter 插件实现了写入数据到 RDBMS 主库的目的表的功能。在底层实现上, RDBMSWriter 通过 JDBC 连接远程 RDBMS 数据库,并执行相应的 insert into … 的 sql 语句将数据写入 RDBMS
接入步骤
下面以人大金仓数据库为例子
1.前提条件
私服中又datax的pom依赖,本地有datax的编译好的jar包。详细步骤参考datax编译打包
我datax的编译好的包路径为D:\study\dataX\datax\datax
2.把新的驱动信息放置到读写插件中
2.1将驱动放置读插件中
{datax.home}\plugin\reader\rdbmsreader\lib中添加新的驱动jar包
2.2 j将驱动放置到写插件中
{datax.home}\plugin\writer\rdbmswriter\libs中添加新的驱动jar包
3.修改读写插件的plugin.json 增加新的驱动类
3.1 修改读的plugin.json 增加驱动类
编辑 {datax.home}\plugin\reader\rdbmsreader\plugin.json 增加新的驱动信息
3.2 修改写的plugin.json
编辑 {datax.home}\plugin\writer\rdbmswriter\plugin.json 增加新的驱动信息

4.在项目的pom中添加
注意这里的com.alibaba.datax.version 是指私服中的版本,或者你本地install的版本,而并非阿里云上的版本。阿里云中的版本可能和你本地的jar包有冲突
<dependency>
<groupId>com.alibaba.datax</groupId>
<artifactId>rdbmsreader</artifactId>
<version>${
com.alibaba.datax.version}</version>
</dependency>
5.编辑job文件,启动测试类
{
"job": {
"content": [
{
"reader": {
"parameter": {
"password": "sjjh@Bonc12#$",
"connection": [
{
"querySql": [
"SELECT \"id\", \"dis_task_id\", \"audit_type\", \"audit_state\", \"remark\", \"audit_user\", \"audit_username\", \"is_check\", \"dept_id\", \"level\", \"create_time\", \"create_user\", \"update_time\", \"update_user\" FROM \"PUBLIC\".\"dis_audit\""
],
"splitPk": "id",
"jdbcUrl": [
"jdbc:kingbase8://192.168.72.193:54321/hamal"
]
}
],
"username": "sjjh"
},
"name": "rdbmsreader"
},
"writer": {
"parameter": {
"password": "sjjh@Bonc12#$",
"column": [
"\"id\"",
"\"dis_task_id\"",
"\"audit_type\"",
"\"audit_state\"",
"\"remark\"",
"\"audit_user\"",
"\"audit_username\"",
"\"is_check\"",
"\"dept_id\"",
"\"level\"",
"\"create_time\"",
"\"create_user\"",
"\"update_time\"",
"\"update_user\""
],
"connection": [
{
"jdbcUrl": "jdbc:kingbase8://192.168.72.193:54321/hamal",
"table": [
"dis_audit_bak"
]
}
],
"username": "sjjh",
"preSql": []
},
"name": "rdbmswriter"
}
}
],
"setting": {
"errorLimit": {
"record": 10,
"percentage": 0.01
},
"speed": {
"channel": 1
}
}
}
}