支援的欄位類型
KingbaseES Reader針對KingbaseES類型的轉換列表,如下所示。
類型分類 | 資料來源的資料類型 |
整數類 | INT、TINYINT、SMALLINT、MEDIUMINT和BIGINT |
浮點類 | FLOAT、DOUBLE和DECIMAL |
字串類 | VARCHAR、CHAR、TINYTEXT、TEXT、MEDIUMTEXT和LONGTEXT |
日期時間類 | DATE、DATETIME、TIMESTAMP、TIME和YEAR |
布爾型 | BIT和BOOL |
二進位類 | TINYBLOB、MEDIUMBLOB、BLOB、LONGBLOB和VARBINARY |
建立資料來源
在進行資料同步任務開發時,您需要在DataWorks上建立一個對應的資料來源,操作流程請參見建立並管理資料來源,詳細的配置參數解釋可在配置介面查看對應參數的文案提示。
資料同步任務開發
資料同步任務的配置入口和通用配置流程可參見下文的配置指導。
附錄:指令碼Demo與參數說明
離線任務指令碼配置方式
如果您配置離線任務時使用指令碼模式的方式進行配置,您需要按照統一的指令碼格式要求,在任務指令碼中編寫相應的參數,詳情請參見通過指令碼模式配置離線同步任務,以下為您介紹指令碼模式下資料來源的參數配置詳情。
Reader指令碼Demo
配置單庫單表
{
"type":"job",
"version":"2.0",//版本號碼。
"steps":[
{
"stepType":"kingbasees",//外掛程式名。
"parameter":{
"column":[//列名。
"id"
],
"connection":[
{ "querySql":["select a,b from join1 c join join2 d on c.id = d.id;"], //使用字串的形式,將querySql寫在connection中。
"datasource":"",//資料來源。
"table":[//表名,即使只有一張表,也必須以[]的數組形式書寫。
"xxx"
]
}
],
"where":"",//過濾條件。
"splitPk":"",//切分鍵。
"encoding":"UTF-8"//編碼格式。
},
"name":"Reader",
"category":"reader"
},
{
"stepType":"stream",
"parameter":{},
"name":"Writer",
"category":"writer"
}
],
"setting":{
"errorLimit":{
"record":"0"//錯誤記錄數。
},
"speed":{
"throttle":true,//當throttle值為false時,mbps參數不生效,表示不限流;當throttle值為true時,表示限流。
"concurrent":1, //作業並發數。
"mbps":"12"//限流,此處1mbps = 1MB/s。
}
},
"order":{
"hops":[
{
"from":"Reader",
"to":"Writer"
}
]
}
}
配置分庫分表
說明 分庫分表是指在KingbaseES Reader端可以選擇多個KingbaseES資料表,且表結構保持一致。
{
"type": "job",
"version": "1.0",
"configuration": {
"reader": {
"plugin": "kingbasees",
"parameter": {
"connection": [
{
"table": [
"tbl1",
"tbl2",
"tbl3"
],
"datasource": "datasourceName1"
},
{
"table": [
"tbl4",
"tbl5",
"tbl6"
],
"datasource": "datasourceName2"
}
],
"singleOrMulti": "multi",
"splitPk": "db_id",
"column": [
"id", "name", "age"
],
"where": "1 < id and id < 100"
}
},
"writer": {
}
}
}
Reader指令碼參數
參數 | 描述 |
username | 使用者名稱。 |
password | 密碼。 |
column | 需要同步的欄位名稱。如果需要同步所有列,請使用星號(*)。 |
table | 需要同步的表名。 |
jdbcUrl | 串連KingbaseES的JDBC URL。例如,jdbc:kingbase8://127.0.0.1:30215?currentschema=TEST。 |
splitPk | KingbaseES表中的某個欄位作為同步的切分欄位,切分欄位有助於多並發同步KingbaseES表。 切分欄位需要是數值整型的欄位,如果沒有該類型,則可以不填。 |
Writer指令碼Demo
指令碼配置樣本如下所示。
{
"type":"job",
"version":"2.0",//版本號碼。
"steps":[
{
"stepType":"stream",
"parameter":{},
"name":"Reader",
"category":"reader"
},
{
"stepType":"kingbasees",//外掛程式名。
"parameter":{
"postSql":[],//匯入後的準備語句。
"datasource":"",//資料來源。
"column":[//列名。
"id",
"value"
],
"batchSize":1024,//一次性批量提交的記錄數大小。
"table":"",//表名。
"preSql":[
"delete from XXX;" //匯入前的準備語句。
]
},
"name":"Writer",
"category":"writer"
}
],
"setting":{
"errorLimit":{//錯誤記錄數。
"record":"0"
},
"speed":{
"throttle":true,//當throttle值為false時,mbps參數不生效,表示不限流;當throttle值為true時,表示限流。
"concurrent":1, //作業並發數。
"mbps":"12"//限流,此處1mbps = 1MB/s。
}
},
"order":{
"hops":[
{
"from":"Reader",
"to":"Writer"
}
]
}
}
Writer指令碼參數
參數 | 描述 | 是否必選 | 預設值 |
datasource | 資料來源名稱,指令碼模式支援添加資料來源,此配置項填寫的內容必須與添加的資料來源名稱保持一致。 | 是 | 無 |
table | 選取的需要同步的表名稱。 | 是 | 無 |
column | 目標表需要寫入資料的欄位,欄位之間用英文所逗號分隔,例如"column": ["id", "name", "age"] 。 如果要依次寫入全部列,使用星號(*)表示, 例如"column":["*"] 。
說明 當來源端欄位名稱包含斜杠(/),需要使用反斜線加雙引號(\"your_column_name\")進行轉義,例如,欄位名稱為/abc/efg,則轉義後欄位名稱為\"/abc/efg\"。 | 是 | 無 |
preSql | 執行資料同步任務之前率先執行的SQL語句。目前嚮導模式僅允許執行一條SQL語句,指令碼模式可以支援多條SQL語句。例如,執行前清空表中的舊資料: truncate table tablename
說明 當有多條SQL語句時,不支援SQL事務原子性。 | 否 | 無 |
postSql | 執行資料同步任務之後執行的SQL語句,目前嚮導模式僅允許執行一條SQL語句,指令碼模式可以支援多條SQL語句。例如,加上某一個時間戳記:alter table tablenameadd colname timestamp DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP 。 | 否 | 無 |
batchSize | 一次性批量提交的記錄數大小,該值可以極大減少資料同步系統與資料來源的網路互動次數,並提升整體輸送量。如果該值設定過大,會導致資料同步運行進程OOM異常。 | 否 | 1024 |