Amazon Redshift数据源

Amazon Redshift数据源为您提供读取和写入Amazon Redshift的双向通道,方便您后续可以通过向导模式和脚本模式配置数据同步任务。本文为您介绍Amazon Redshift数据同步能力支持情况。

支持的Amazon Redshift版本

Amazon Redshift使用的驱动版本是redshift-jdbc4.2 Driver 2.1.0.1,驱动能力详情请参见为Amazon Redshift配置JDBC驱动程序版本

支持的字段类型

Amazon Redshift的字段类型请参见Amazon Redshift官方文档。下面为您罗列当前主要字段的支持情况。

Amazon Redshift类型

SQL类型

Java类型

BIGINT

SQL_BIGINT

长整型

BOOLEAN

SQL_BIT

Boolean

CHAR

SQL_CHAR

字符串

DATE

SQL_TYPE_DATE

java.sql.Date

DECIMAL

SQL_NUMERIC

BigDecimal

DOUBLE PRECISION

SQL_DOUBLE

Double

GEOMETRY

SQL_ LONGVARBINARY

byte[]

INTEGER

SQL_INTEGER

整数

OID

SQL_BIGINT

长整型

SUPER

SQL_LONGVARCHAR

字符串

REAL

SQL_REAL

Float

SMALLINT

SQL_SMALLINT

短型

TEXT

SQL_VARCHAR

字符串

TIME

SQL_TYPE_TIME

java.sql.Time

TIMETZ

SQL_TYPE_TIME

java.sql.Time

TIMESTAMP

SQL_TYPE_ TIMESTAMP

java.sql.Timestamp

TIMESTAMPTZ

SQL_TYPE_ TIMESTAMP

java.sql.Timestamp

VARCHAR

SQL_VARCHAR

字符串

数据同步前准备

在DataWorks上进行数据同步前,您需要将数据源的网络与数据集成使用的Serverless资源组(推荐)或独享数据集成资源组打通,使之通过内网地址进行访问。网络打通的具体方法可参考:网络连通方案

创建数据源

在进行数据同步任务开发时,您需要在DataWorks上创建一个对应的数据源,操作流程请参见创建并管理数据源详细的配置参数解释可在配置界面查看对应参数的文案提示

以下对Amazon Redshift数据源的几个配置项进行说明。

  • JDBC URL:请填写JDBC连接串,包含IP、端口号、数据库和连接参数。支持公网IP和私网IP,如果使用公网IP,请确保数据集成资源组能够正常访问Amazon Redshift所在的主机。

  • 用户名:请填写Amazon Redshift数据库的用户名。

  • 密码:请填写Amazon Redshift数据库对应用户的密码。

数据同步任务开发

数据同步任务的配置入口和通用配置流程可参见下文的配置指导。

单表离线同步任务配置指导

附录:脚本Demo与参数说明

离线任务脚本配置方式

如果您配置离线任务时使用脚本模式的方式进行配置,您需要按照统一的脚本格式要求,在任务脚本中编写相应的参数,详情请参见通过脚本模式配置离线同步任务,以下为您介绍脚本模式下数据源的参数配置详情。

Reader脚本Demo

{
  "stepType": "redshift"
  "parameter":
  {
    "datasource":"redshift_datasource",
    "table": "redshift_table_name",
    "where": "xxx=3",
    "splitPk": "id",
    "column":
    [
      "id",
      "table_id",
      "table_no",
      "table_name",
      "table_status"
    ]
  },
  "name": "Reader",
  "category": "reader"
}

Reader脚本参数

脚本参数名

描述

是否必选

默认值

datasource

数据源名称,脚本模式支持添加数据源,此配置项填写的内容必须与添加的数据源名称保持一致。

table

选取的需要同步的表名称。

column

需要同步的字段列表,字段之间用英文逗号分隔。例如"column":["id","name","age"]

如果要同步全部列,使用(*)表示,例如"column":["*"]

where

筛选条件,根据指定的columntablewhere条件拼接SQL,并根据该SQL进行数据抽取。例如在做测试时,可以将where条件指定为limit 10。

在实际业务场景中,通常会选择当天的数据进行同步,可以将where条件指定为gmt_create>$bizdate

  • where条件可以有效地进行业务增量同步。

  • where条件不配置或为空时,则视作全表同步数据。

splitPk

如果指定splitPk,表示您希望使用splitPk代表的字段进行数据分片。数据同步系统会启动并发任务进行数据同步,以提高数据同步的效能。

Writer脚本Demo

{
  "stepType": "redshift",//插件名。
  "parameter":
  {
    "postSql":["delete from XXX;"],
    "preSql":["delete from XXX;"],
    "datasource":"redshift_datasource",//数据源名。
    "table": "redshift_table_name",//表名。
    "writeMode": "insert",
    "batchSize": 2048,
    "column":
    [
      "id",
      "table_id",
      "table_no",
      "table_name",
      "table_status"
    ]
  },
  "name": "Writer",
  "category": "writer"
}

Writer脚本参数

脚本参数名

描述

是否必选

默认值

datasource

数据源名称,脚本模式支持添加数据源,此配置项填写的内容必须与添加的数据源名称保持一致。

table

需要写入的表名称。

column

目标表需要写入数据的字段,字段之间用英文逗号分隔。例如"column":["id","name","age"]

如果要依次写入全部列,使用(*)表示,例如"column":["*"]

preSql

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

postSql

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

batchSize

每批次导入的最大数据条数。

2048

writeMode

目前只支持insert。

insert