向源 RDS 数据库中添加数据并查询数据
要完成创建将数据从 Amazon RDS 复制到 Amazon Redshift 的零 ETL 集成,您必须在目标目的地中创建数据库。
要连接 Amazon Redshift,请连接到您的 Amazon Redshift 集群或工作组,并创建一个引用集成标识符的数据库。然后,您可以向源 RDS 数据库中添加数据,并在 Amazon Redshift 或 Amazon SageMaker 中查看复制的数据。
创建目标数据库
在开始将数据复制到 Amazon Redshift 中之前,创建集成后,您必须在目标数据仓库中创建一个数据库。此数据库必须包含对集成标识符的引用。您可以使用 Amazon Redshift 控制台或查询编辑器 v2 来创建数据库。
有关创建目标数据库的说明,请参阅在 Amazon Redshift 中创建目标数据库。
向源数据库中添加数据
在配置集成后,您可以将一些数据添加到您希望复制到数据仓库的 RDS 数据库中。
注意
Amazon RDS 与目标分析仓库中的数据类型存在差异。有关数据类型映射的表,请参阅RDS 和 Amazon Redshift 数据库之间的数据类型差异。
首先,使用您选择的 MySQL 客户端连接到源数据库。有关说明,请参阅连接到 MySQL 数据库实例。
然后,创建一个表并插入一行示例数据。
重要
确保该表有主键。否则,它无法复制到目标数据仓库。
以下示例使用 MySQL Workbench 实用程序
CREATE DATABASE
my_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_table
VALUES (1, 'The Shining', 'Stephen King', 1977, 'Supernatural fiction');
在 Amazon Redshift 中查询您的 Amazon RDS 数据
将数据添加到 RDS 数据库后,数据会复制到目标数据库并准备好供查询。
查询复制的数据
-
导航到 Amazon Redshift 控制台,然后从左侧导航窗格中选择查询编辑器 v2。
-
连接到您的集群或工作组,然后从下拉菜单中选择您通过集成创建的目标数据库(本示例中为 destination_database)。有关创建目标数据库的说明,请参阅在 Amazon Redshift 中创建目标数据库。
-
使用 SELECT 语句来查询您的数据。在本例中,您可以运行以下命令,从您在源 RDS 数据库中创建的表中选择所有数据:
SELECT * from
my_db
."books_table
";-
是 RDS 数据库模式名称。my_db
-
是 RDS 表名称。books_table
-
也可以使用命令行客户端查询数据。例如:
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 RDS 目前仅支持将这些数据类型用于零 ETL 集成。
如果源数据库中的表包含不受支持的数据类型,则该表将不同步并且目的地目标无法使用该表。从源到目标的流式传输仍在继续,但数据类型不受支持的表不可用。要修复该表并使其在目标目的地中可用,您必须手动恢复重大更改,然后通过运行 ALTER DATABASE...INTEGRATION
REFRESH
来刷新集成。
注意
您无法刷新与 Amazon SageMaker 智能湖仓的零 ETL 集成。而是应删除并尝试重新创建集成。
RDS for MySQL
RDS for MySQL 数据类型 | 目标数据类型 | 描述 | 限制 |
---|---|---|---|
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 个字符的字符串值 | 无 |
MEDIUMTEXT | VARCHAR(65535) | 长度可变、最多 65535 个字符的字符串值 | 无 |
LONGTEXT | VARCHAR(65535) | 长度可变、最多 65535 个字符的字符串值 | 无 |
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 | 作为值的半结构化数据或文档 | 无 |