向源 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 DATABASEmy_db; USEmy_db; CREATE TABLEbooks_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 INTObooks_tableVALUES (1, 'The Shining', 'Stephen King', 1977, 'Supernatural fiction');
在 Amazon Redshift 中查询您的 Amazon RDS 数据
将数据添加到 RDS 数据库后,它会复制到 Amazon Redshift 中并准备好以供查询。
查询复制的数据
-
导航到 Amazon Redshift 控制台,然后从左侧导航窗格中选择查询编辑器 v2。
-
连接到您的集群或工作组,然后从下拉菜单中选择您通过集成创建的目标数据库(本示例中为 destination_database)。有关创建目标数据库的说明,请参阅在 Amazon Redshift 中创建目标数据库。
-
使用 SELECT 语句来查询您的数据。在本例中,您可以运行以下命令,从您在源 RDS 数据库中创建的表中选择所有数据:
SELECT * frommy_db."books_table";
-
是 RDS 数据库模式名称。my_db -
是 RDS 表名称。books_table
-
也可以使用命令行客户端查询数据。例如:
destination_database=# select * frommy_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 | 作为值的半结构化数据或文档 |