AnalyticDB for PostgreSQL數據源提供讀取和寫入AnalyticDB for PostgreSQL的雙向功能,本文為您介紹DataWorks的AnalyticDB for PostgreSQL數據同步的能力支持情況。
使用限制
離線同步支持讀取視圖表。
支持的版本
支持版本最高至7.0(含)。
支持的字段類型
離線讀
AnalyticDB for PostgreSQL Reader支持大部分AnalyticDB for PostgreSQL類型,但也存在部分類型沒有支持的情況,請注意檢查您的數據類型。
AnalyticDB for PostgreSQL Reader針對AnalyticDB for PostgreSQL的類型轉換列表,如下所示。
類型分類 | AnalyticDB for PostgreSQL數據類型 |
整數類 | BIGINT、BIGSERIAL、INTEGER、SMALLINT、SERIAL和GEOMETRY |
浮點類 | DOUBLE、PRECISION、MONEY、NUMERIC和REAL |
字符串類 | VARCHAR、CHAR、TEXT、BIT和INET |
日期時間類 | DATE、TIME和TIMESTAMP |
布爾型 | BOOL |
二進制類 | BYTEA |
離線寫
AnalyticDB for PostgreSQL Writer支持大部分AnalyticDB for PostgreSQL類型,但也存在部分類型沒有支持的情況,請注意檢查您的類型。
AnalyticDB for PostgreSQL Writer針對AnalyticDB for PostgreSQL的類型轉換列表,如下所示。
類型分類 | AnalyticDB for PostgreSQL數據類型 |
LONG | BIGINT、BIGSERIAL、INTEGER、SMALLINT和SERIAL |
DOUBLE | DOUBLE、PRECISION、MONEY、NUMERIC和REAL |
STRING | VARCHAR、CHAR、TEXT、BIT、INET和GEOMETRY |
DATE | DATE、TIME和TIMESTAMP |
BOOLEAN | BOOL |
BYTES | BYTEA |
MONEY、INET和BIT需要您使用a_inet::varchar
類似的語法進行轉換。
創建數據源
在進行數據同步任務開發時,您需要在DataWorks上創建一個對應的數據源,操作流程請參見創建并管理數據源,詳細的配置參數解釋可在配置界面查看對應參數的文案提示。
數據同步任務開發
數據同步任務的配置入口和通用配置流程可參見下文的配置指導。
單表離線同步任務配置指導
操作流程請參見通過向導模式配置離線同步任務、通過腳本模式配置離線同步任務。
腳本模式配置的全量參數和腳本Demo請參見下文的附錄:腳本Demo與參數說明。
整庫離線讀同步配置指導
操作流程請參見數據集成側同步任務配置。
附錄:腳本Demo與參數說明
離線任務腳本配置方式
如果您配置離線任務時使用腳本模式的方式進行配置,您需要按照統一的腳本格式要求,在任務腳本中編寫相應的參數,詳情請參見通過腳本模式配置離線同步任務,以下為您介紹腳本模式下數據源的參數配置詳情。
Reader腳本Demo
{
"type": "job",
"steps": [
{
"parameter": {
"datasource": "test_004",//數據源名稱。
"column": [//源端表的列名。
"id",
"name",
"sex",
"salary",
"age"
],
"where": "id=1001",//過濾條件。
"splitPk": "id",//切分鍵。
"table": "public.person"http://源端表名。
},
"name": "Reader",
"category": "reader"
},
{
"parameter": {},
"name": "Writer",
"category": "writer"
}
],
"version": "2.0",//版本號
"order": {
"hops": [
{
"from": "Reader",
"to": "Writer"
}
]
},
"setting": {
"errorLimit": {//錯誤記錄數。
"record": ""
},
"speed": {
"concurrent": 6,//并發數。
"throttle": true,//當throttle值為false時,mbps參數不生效,表示不限流;當throttle值為true時,表示限流。
"mbps":"12"http://限流,此處1mbps = 1MB/s。
}
}
}
Reader腳本參數
參數 | 描述 | 是否必選 | 默認值 |
datasource | 數據源名稱,腳本模式支持添加數據源,該配置項輸入的內容必須和添加的數據源名稱保持一致。 | 是 | 無 |
table | 選取的需要同步的表名稱。 | 是 | 無 |
column | 所配置的表中需要同步的列名集合,使用JSON的數組描述字段信息 。默認使用所有列配置,例如[*]。
| 是 | 無 |
splitPk | AnalyticDB for PostgreSQL Reader進行數據抽取時,如果指定splitPk,表示您希望使用splitPk代表的字段進行數據分片。數據同步會啟動并發任務進行數據同步,以提高數據同步的效能。
| 否 | 無 |
where | 篩選條件,AnalyticDB for PostgreSQLReader根據指定的column、table和where條件拼接SQL,并根據該SQL進行數據抽取。例如測試時,可以將where條件指定實際業務場景,往往會選擇當天的數據進行同步,將where條件指定為
| 否 | 無 |
querySql(高級模式,向導模式不提供) | 在部分業務場景中,where配置項不足以描述所篩選的條件,您可以通過該配置型來自定義篩選SQL。當配置此項后,數據同步系統就會忽略column、table等配置項,直接使用該項配置的內容對數據進行篩選。例如需要進行多表join后同步數據,使用 當您配置querySql時,AnalyticDB for PostgreSQL Reader直接忽略column、table和where條件的配置。 | 否 | 無 |
fetchSize | 該配置項定義了插件和數據庫服務器端每次批量數據獲取條數,該值決定了數據集成和服務器端的網絡交互次數,能夠提升數據抽取性能。 說明 fetchSize值過大(>2048)可能造成數據同步進程OOM。 | 否 | 512 |
Writer腳本Demo
{
"type": "job",
"steps": [
{
"parameter": {},
"name": "Reader",
"category": "reader"
},
{
"parameter": {
"postSql": [],//導入后的完成語句。
"datasource": "test_004",//數據源名。
"column": [//目標表的列名。
"id",
"name",
"sex",
"salary",
"age"
],
"table": "public.person",//目標表的表名。
"preSql": []//導入前的準備語句。
},
"name": "Writer",
"category": "writer"
}
],
"version": "2.0",//版本號。
"order": {
"hops": [
{
"from": "Reader",
"to": "Writer"
}
]
},
"setting": {
"errorLimit": {//錯誤記錄數。
"record": ""
},
"speed": {
"throttle":true,//當throttle值為false時,mbps參數不生效,表示不限流;當throttle值為true時,表示限流。
"concurrent":6, //作業并發數。
"mbps":"12"http://限流
}
}
}
Writer腳本參數
參數 | 描述 | 是否必選 | 默認值 |
datasource | 數據源名稱,腳本模式支持添加數據源,此配置項填寫的內容必須要與添加的數據源名稱保持一致。 | 是 | 無 |
table | 選取的需要同步的表名稱。 | 是 | 無 |
writeMode | 選擇導入模式,支持insert、copy和upsert方式。
| 否 | insert |
conflictMode | 當writeMode為upsert,寫入數據至PostgreSQL出現主鍵或唯一性索引沖突時,可選擇如下沖突處理策略:
說明 當前僅支持通過腳本模式配置沖突處理策略。 | 否 | replace |
column | 目標表需要寫入數據的字段,字段之間用英文逗號分隔。例如 | 是 | 無 |
preSql | 執行數據同步任務之前率先執行的SQL語句。目前向導模式僅允許執行一條SQL語句,腳本模式可以支持多條SQL語句,例如清除舊數據。 | 否 | 無 |
postSql | 執行數據同步任務之后執行的SQL語句。目前向導模式僅允許執行一條SQL語句,腳本模式可以支持多條SQL語句,例如加上某一個時間戳。 | 否 | 無 |
batchSize | 一次性批量提交的記錄數大小,該值可以極大減少數據集成與AnalyticDB for PostgreSQL的網絡交互次數,并提升整體吞吐量。但是該值設置過大可能會造成數據集成運行進程OOM情況。 | 否 | 1,024 |