1. 程式人生 > 其它 >datax 通用的關係資料庫讀寫外掛

datax 通用的關係資料庫讀寫外掛

技術標籤: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
			}
		}
	}
}

6.解決執行中的報錯。主要是修改阿里datax中的原始碼

7.執行測試類即可驗證成功