datax 通用的關係資料庫讀寫外掛
阿新 • • 發佈:2021-01-09
技術標籤:datax
快速介紹
組成介紹
讀寫外掛由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": "[email protected]#$",
"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": "[email protected]#$",
"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
}
}
}
}