通过DataWorks导入数据

云数据库 SelectDB 版支持使用DataWorks的数据集成功能,通过SelectDB Writer导入表数据。本文以MySQL数据源为例,介绍如何通过DataWorks同步数据至云数据库 SelectDB 版

使用限制

  • DataWorks的数据集成功能仅支持离线写入云数据库 SelectDB 版

  • 不支持写入BITMAP、HLL(HyperLogLog)和QUANTILE_STATE类型的字段。

数据同步任务开发

新增数据源

在进行数据同步任务开发时,您需要在DataWorks上分别创建MySQL和SelectDB数据源。

  1. 创建MySQL数据源,详情请参见MySQL数据源

  2. 创建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

目标表需要写入数据的字段,字段之间用英文逗号分隔。必选参数。例如"column":["id","name","age"]。如果要依次写入全部列,使用(*)表示,例如"column":["*"]

loadUrl

SelectDB的连接地址。必选参数。格式为ip:port。其中ip是SelectDB的VPC地址port是SelectDB集群的HTTP协议端口。例如:selectdb-cn-4xl3jv1****.selectdbfe.rds.aliyuncs.com:8080

username

访问SelectDB数据库的用户名。必选参数。

password

访问SelectDB数据库的密码。必选参数。

preSql

执行数据同步任务之前率先执行的SQL语句。目前向导模式仅允许执行一条SQL语句,脚本模式可以支持多条SQL语句,例如,执行前清空表中的旧数据。

postSql

执行数据同步任务之后执行的SQL语句。目前向导模式仅允许执行一条SQL语句,脚本模式可以支持多条SQL语句,例如,加上某一个时间戳。

maxBatchRows

每批次导入数据的最大行数。默认为500000。

loadProps

COPY INTO的请求参数,主要用于配置导入的数据格式。默认JSON格式导入。如果loadProps没有配置,或者配置为"loadProps":{},都采用默认的JSON格式。使用JSON格式时,SelectDB仅支持配置为如下模式,其中strip_outer_array=true

"loadProps": {
   "format": "json",
   "strip_outer_array":true
}

如果您需要指定为CSV格式导入,则可以按照如下方式指定为CSV格式,并配置行、列分隔符。如果您没有指定行、列分隔符,则默认传入的数据均会被转为字符串,并以\t作为列分隔符,\n作为行分隔符,组成CSV文件进行SelectDB导入操作。

"loadProps": {
   "format":"csv",
   "column_separator": "\\x01",
   "line_delimiter": "\\x02"
}

支持的字段类型

云数据库 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

不支持

相关文档

什么是DataWorks