云数据库 SelectDB 版支持使用DataWorks的数据集成功能,通过SelectDB Writer导入表数据。本文以MySQL数据源为例,介绍如何通过DataWorks同步数据至云数据库 SelectDB 版。
使用限制
DataWorks的数据集成功能仅支持离线写入云数据库 SelectDB 版。
不支持写入BITMAP、HLL(HyperLogLog)和QUANTILE_STATE类型的字段。
数据同步任务开发
新增数据源
在进行数据同步任务开发时,您需要在DataWorks上分别创建MySQL和SelectDB数据源。
创建MySQL数据源,详情请参见MySQL数据源。
创建SelectDB数据源,详情请参见创建并管理数据源。SelectDB数据源的部分配置参数如下所示:
参数
说明
数据源名称
数据源的名称。
MySQL连接地址
请填写JDBC连接串
jdbc:mysql://<ip>:<port>/<dbname>
。您可以从云数据库 SelectDB 版控制台的实例详情 > 网络信息中获取VPC地址(或公网地址)和MySQL协议端口。
示例:
jdbc:mysql://selectdb-cn-4xl3jv1****.selectdbfe.rds.aliyuncs.com:9030/test_db
说明当MySQL实例和云数据库 SelectDB 版实例属于同一VPC时,使用VPC地址;不属于同一个VPC时,使用公网地址。
HTTP连接地址
请填写HTTP协议访问地址
<ip>:<port>
。您可以从云数据库 SelectDB 版控制台的实例详情 > 网络信息中获取VPC地址(或公网地址)和HTTP协议端口。
示例:
selectdb-cn-4xl3jv1****.selectdbfe.rds.aliyuncs.com:8080
说明当MySQL实例和云数据库 SelectDB 版实例属于同一VPC时,使用VPC地址;不属于同一个VPC时,使用公网地址。
用户名
请填写云数据库 SelectDB 版实例的用户名。
密码
请填写云数据库 SelectDB 版实例对应用户的密码。
重要为了保证添加数据源成功,需要将DataWorks资源组的IP添加到SelectDB等数据源的白名单,具体操作流程请参考添加白名单。添加白名单时需要区分独享数据集成资源组和公共数据集成资源组。
配置单表离线同步任务
您可以选择向导模式或者脚本模式配置离线同步任务,操作流程请参见:
通过脚本模式配置离线任务时,全量参数和脚本示例请参见脚本模式示例与参数说明。
脚本模式示例与参数说明
离线任务脚本配置方式
使用脚本模式配置离线任务时,需要按照统一的脚本格式要求编写脚本。脚本格式要求请参见通过脚本模式配置离线同步任务。
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格式,并配置行、列分隔符。如果您没有指定行、列分隔符,则默认传入的数据均会被转为字符串,并以
|
支持的字段类型
云数据库 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 | 不支持 |