向源 RDS 数据库中添加数据并在 Amazon Redshift 中对其进行查询 - Amazon Relational Database Service
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

向源 RDS 数据库中添加数据并在 Amazon Redshift 中对其进行查询

这是 Amazon RDS 与 Amazon Redshift 的零 ETL 集成的预发布文档,该集成已提供预览版。文档和特征都可能会更改。我们建议您仅在测试环境中使用此特征,不要在生产环境中使用。有关预览条款和条件,请参阅 Amazon 服务条款中的测试版和预览

要创建将数据从 Amazon RDS 复制到 Amazon Redshift 的零 ETL 集成,您必须在 Amazon Redshift 中创建目标数据库。

首先,连接到您的 Amazon Redshift 集群或工作组,并创建一个引用您的集成标识符的数据库。然后,您可以向 RDS 数据库中添加数据,并在 Amazon Redshift 中查看其复制的内容。

在 Amazon Redshift 中创建目标数据库

在开始将数据复制到 Amazon Redshift 中之前,创建集成后,您必须在目标数据仓库中创建一个目标数据库。此目标数据库必须包含对集成标识符的引用。您可以使用 Amazon Redshift 控制台或查询编辑器 v2 来创建数据库。

有关创建目标数据库的说明,请参阅在 Amazon Redshift 中创建目标数据库

向源数据库中添加数据

在配置集成后,您可以将一些数据添加到您希望复制到 Amazon Redshift 数据仓库的 RDS 数据库中。

注意

Amazon RDS 和 Amazon Redshift 中的数据类型存在差异。有关数据类型映射的表,请参阅RDS 和 Amazon Redshift 数据库之间的数据类型差异

首先,使用您选择的 MySQL 客户端连接到源数据库。有关说明,请参阅 连接到运行 MySQL 数据库引擎的数据库实例

然后,创建一个表并插入一行示例数据。

重要

确保该表有主键。否则,它无法复制到目标数据仓库。

以下示例使用 MySQL Workbench 实用程序

CREATE DATABASE my_db; USE my_db; CREATE TABLE books_table (ID int NOT NULL, Title VARCHAR(50) NOT NULL, Author VARCHAR(50) NOT NULL, Copyright INT NOT NULL, Genre VARCHAR(50) NOT NULL, PRIMARY KEY (ID)); INSERT INTO books_table VALUES (1, 'The Shining', 'Stephen King', 1977, 'Supernatural fiction');

在 Amazon Redshift 中查询您的 Amazon RDS 数据

将数据添加到 RDS 数据库后,它会复制到 Amazon Redshift 中并准备好以供查询。

查询复制的数据
  1. 导航到 Amazon Redshift 控制台,然后从左侧导航窗格中选择查询编辑器 v2

  2. 连接到您的集群或工作组,然后从下拉菜单中选择您通过集成创建的目标数据库(本示例中为 destination_database)。有关创建目标数据库的说明,请参阅在 Amazon Redshift 中创建目标数据库

  3. 使用 SELECT 语句来查询您的数据。在本例中,您可以运行以下命令,从您在源 RDS 数据库中创建的表中选择所有数据:

    SELECT * from my_db."books_table";
    • my_dbRDS 数据库模式名称。

    • books_tableRDS 表名称。

也可以使用命令行客户端查询数据。例如:

destination_database=# select * from my_db."books_table"; ID | Title | Author | Copyright | Genre | txn_seq | txn_id ----+–------------+---------------+-------------+------------------------+----------+--------+ 1 | The Shining | Stephen King | 1977 | Supernatural fiction | 2 | 12192
注意

为了区分大小写,请对架构、表和列名使用双引号(" ")。有关更多信息,请参阅 enable_case_sensitive_identifier

RDS 和 Amazon Redshift 数据库之间的数据类型差异

表显示 RDS for MySQL 数据类型与相应 Amazon Redshift 数据类型的映射。Amazon RDS 目前仅支持将这些数据类型用于零 ETL 集成。

如果您的源数据库中的表包含不受支持的数据类型,则该表将不同步并且 Amazon Redshift 目标无法使用该表。从源到目标的流式传输仍在继续,但数据类型不受支持的表不可用。要修复该表并使其在 Amazon Redshift 中可用,您必须手动恢复重大更改,然后通过运行 ALTER DATABASE...INTEGRATION REFRESH 来刷新集成。

RDS for MySQL

RDS for MySQL 数据类型 Amazon Redshift 数据类型 描述 限制
INT INTEGER 有符号的四字节整数
SMALLINT SMALLINT 有符号的二字节整数
TINYINT SMALLINT 有符号的二字节整数
MEDIUMINT INTEGER 有符号的四字节整数
BIGINT BIGINT 有符号的八字节整数
INT UNSIGNED BIGINT 有符号的八字节整数
TINYINT UNSIGNED SMALLINT 有符号的二字节整数
MEDIUMINT UNSIGNED INTEGER 有符号的四字节整数
BIGINT UNSIGNED DECIMAL(20,0) 可选精度的精确数字
DECIMAL(p,s) = NUMERIC(p,s) DECIMAL (p,s) 可选精度的精确数字

不支持精度大于 38 和比例大于 37

DECIMAL(p,s) UNSIGNED = NUMERIC(p,s) UNSIGNED DECIMAL (p,s) 可选精度的精确数字

不支持精度大于 38 和比例大于 37

FLOAT4/REAL REAL 单精度浮点数
FLOAT4/REAL UNSIGNED REAL 单精度浮点数
DOUBLE/REAL/FLOAT8 DOUBLE PRECISION 双精度浮点数
DOUBLE/REAL/FLOAT8 UNSIGNED DOUBLE PRECISION 双精度浮点数
BIT(n) VARBYTE(8) 长度可变的二进制值
BINARY(n) VARBYTE(n) 长度可变的二进制值
VARBINARY (n) VARBYTE(n) 长度可变的二进制值
CHAR(n) VARCHAR (n) 长度可变的字符串值
VARCHAR (n) VARCHAR (n) 长度可变的字符串值
TEXT VARCHAR(65535) 长度可变、最多 65535 字节的字符串值
TINYTEXT VARCHAR(255) 长度可变、最多 255 字节的字符串值
ENUM VARCHAR(1020) 长度可变、最多 1020 字节的字符串值
SET VARCHAR(1020) 长度可变、最多 1020 字节的字符串值
DATE DATE 日历日期(年、月、日)
DATETIME TIMESTAMP 日期和时间(没有时区)
TIMESTAMP(p) TIMESTAMP 日期和时间(没有时区)
TIME VARCHAR(18) 长度可变、最多 18 字节的字符串值
YEAR VARCHAR(4) 长度可变、最多 4 字节的字符串值
JSON SUPER 作为值的半结构化数据或文档