ApsaraDB for SelectDB支援使用DataWorks的Data Integration功能,通過SelectDB Writer匯入表資料。本文以MySQL資料來源為例,介紹如何通過DataWorks同步資料至ApsaraDB for SelectDB。
使用限制
DataWorks的Data Integration功能僅支援離線寫入ApsaraDB for SelectDB。
不支援寫入BITMAP、HLL(HyperLogLog)和QUANTILE_STATE類型的欄位。
資料同步任務開發
新增資料來源
在進行資料同步任務開發時,您需要在DataWorks上分別建立MySQL和SelectDB資料來源。
建立MySQL資料來源,詳情請參見MySQL資料來源。
建立SelectDB資料來源,詳情請參見建立並管理資料來源。SelectDB資料來源的部分配置參數如下所示:
參數
說明
資料來源名稱
資料來源的名稱。
MySQL串連地址
請填寫JDBC串連串
jdbc:mysql://<ip>:<port>/<dbname>
。您可以從ApsaraDB for SelectDB控制台的執行個體詳情 > 網路資訊中擷取VPC地址(或公網地址)和MySQL協議連接埠。
樣本:
jdbc:mysql://selectdb-cn-4xl3jv1****.selectdbfe.rds.aliyuncs.com:9030/test_db
說明當MySQL執行個體和ApsaraDB for SelectDB執行個體屬於同一VPC時,使用VPC地址;不屬於同一個VPC時,使用公網地址。
HTTP串連地址
請填寫HTTP協議訪問地址
<ip>:<port>
。您可以從ApsaraDB for SelectDB控制台的執行個體詳情 > 網路資訊中擷取VPC地址(或公網地址)和HTTP協議連接埠。
樣本:
selectdb-cn-4xl3jv1****.selectdbfe.rds.aliyuncs.com:8080
說明當MySQL執行個體和ApsaraDB for SelectDB執行個體屬於同一VPC時,使用VPC地址;不屬於同一個VPC時,使用公網地址。
使用者名稱
請填寫ApsaraDB for SelectDB執行個體的使用者名稱。
密碼
請填寫ApsaraDB for SelectDB執行個體對應使用者的密碼。
重要為了保證添加資料來源成功,需要將DataWorks資源群組的IP添加到SelectDB等資料來源的白名單,具體操作流程請參考添加白名單。添加白名單時需要區分獨享Data Integration資源群組和公用Data Integration資源群組。
配置單表離線同步任務
您可以選擇嚮導模式或者指令碼模式配置離線同步任務,操作流程請參見:
通過指令碼模式配置離線任務時,全量參數和指令碼樣本請參見指令碼模式樣本與參數說明。
指令碼模式樣本與參數說明
離線任務指令碼配置方式
使用指令碼模式配置離線任務時,需要按照統一的指令碼格式要求編寫指令碼。指令碼格式要求請參見通過指令碼模式配置離線同步任務。
MySQL Reader與SelectDB Writer指令碼樣本
{
"type":"job",
"version":"2.0",
"steps":[
{
"stepType":"mysql",
"parameter":{
"column":[
"<id>",
"<table_id>",
"<table_no>",
"<table_name>",
"<table_status>"
],
"connection":[
{
"datasource":"<mysql_datasource>",
"table":[
"<mysql_table_name>"
]
}
],
"where":"",
"splitPk":"",
"encoding":"UTF-8"
},
"name":"Reader",
"category":"reader"
},
{
"stepType":"selectdb",
"parameter":{
"postSql":[
],
"preSql":[
],
"username": "<selectdb_username>",
"password": "<selectdb_password>",
"loadUrl":[
"<ip:port>"
],
"column":[
"<id>",
"<table_id>",
"<table_no>",
"<table_name>",
"<table_status>"
],
"connection":[
{
"datasource":"<selectdb_datasource>",
"table":[
"<selectdb_table_name>"
]
}
],
"maxBatchRows":1000000,
"loadProps":{
"format":"csv",
"column_separator": "\\x01",
"line_delimiter": "\\x02"
}
},
"name":"Writer",
"category":"writer"
}
],
"setting":{
"errorLimit":{
"record":"0"
},
"speed":{
"throttle":false,
"concurrent":1
}
},
"order":{
"hops":[
{
"from":"Reader",
"to":"Writer"
}
]
}
}
指令碼參數
參數 | 描述 |
datasource | 資料來源名稱。必選參數。指令碼模式支援添加資料來源,此配置項填寫的內容必須與新增的資料來源名稱保持一致。 |
table | 需要同步的表名稱。必選參數。 |
column | 目標表需要寫入資料的欄位,欄位之間用英文逗號分隔。必選參數。例如 |
loadUrl | SelectDB的串連地址。必選參數。格式為 |
username | 訪問SelectDB資料庫的使用者名稱。必選參數。 |
password | 訪問SelectDB資料庫的密碼。必選參數。 |
preSql | 執行資料同步任務之前率先執行的SQL語句。目前嚮導模式僅允許執行一條SQL語句,指令碼模式可以支援多條SQL語句,例如,執行前清空表中的舊資料。 |
postSql | 執行資料同步任務之後執行的SQL語句。目前嚮導模式僅允許執行一條SQL語句,指令碼模式可以支援多條SQL語句,例如,加上某一個時間戳記。 |
maxBatchRows | 每批次匯入資料的最大行數。預設為500000。 |
loadProps | COPY INTO的請求參數,主要用於配置匯入的資料格式。預設JSON格式匯入。如果loadProps沒有配置,或者配置為
如果您需要指定為CSV格式匯入,則可以按照如下方式指定為CSV格式,並配置行、資料行分隔符號。如果您沒有指定行、資料行分隔符號,則預設傳入的資料均會被轉為字串,並以
|
支援的欄位類型
ApsaraDB for SelectDB支援的欄位類型如下表所示:
SelectDB欄位類型 | 離線寫入(SelectDB Writer) |
INT | 支援 |
BIGINT | 支援 |
LARGEINT | 支援 |
SMALLINT | 支援 |
TINYINT | 支援 |
BOOLEAN | 支援 |
DECIMAL | 支援 |
DOUBLE | 支援 |
FLOAT | 支援 |
CHAR | 支援 |
VARCHAR | 支援 |
STRING | 支援 |
DATE | 支援 |
DATEV2 | 支援 |
DATETIME | 支援 |
DATETIMEV2 | 支援 |
ARRAY | 支援 |
JSONB | 支援 |
BITMAP | 不支援 |
HLL(HyperLogLog) | 不支援 |
QUANTILE_STATE | 不支援 |