向源 Aurora 数据库集群中添加数据并在 Amazon Redshift 中对其进行查询
要创建将数据从 Amazon Aurora 复制到 Amazon Redshift 的零 ETL 集成,您必须在 Amazon Redshift 中创建目标数据库。
首先,连接到您的 Amazon Redshift 集群或工作组,并创建一个引用您的集成标识符的数据库。然后,您可以向 Aurora 数据库集群中添加数据,并在 Amazon Redshift 中查看其复制的内容。
主题
在 Amazon Redshift 中创建目标数据库
在开始将数据复制到 Amazon Redshift 中之前,创建集成后,您必须在目标数据仓库中创建一个目标数据库。此目标数据库必须包含对集成标识符的引用。您可以使用 Amazon Redshift 控制台或查询编辑器 v2 来创建数据库。
有关创建目标数据库的说明,请参阅在 Amazon Redshift 中创建目标数据库。
向源数据库集群中添加数据
在配置集成后,您可以将一些数据添加到您希望复制到 Amazon Redshift 数据仓库的 Aurora 数据库集群中。
注意
Amazon Aurora 和 Amazon Redshift 中的数据类型存在差异。有关数据类型映射的表,请参阅Aurora 和 Amazon Redshift 数据库之间的数据类型差异。
首先,使用您选择的 MySQL 或 PostgreSQL 客户端连接到源数据库集群。有关说明,请参阅 连接到 Amazon Aurora 数据库集群。
然后,创建一个表并插入一行示例数据。
重要
确保该表有主键。否则,它无法复制到目标数据仓库。
pg_dump 和 pg_restore PostgreSQL 实用程序最初创建没有主键的表,然后添加主键。如果您使用其中一个实用程序,我们建议您先创建一个架构,然后在单独的命令中加载数据。
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');
PostgreSQL
以下示例使用 psql
PostgreSQL 交互式终端。连接到集群时,请包括您在创建集成时指定的命名数据库。
psql -h
mycluster
.cluster-123456789012
.us-east-2.rds.amazonaws.com -p 5432 -Uusername
-dnamed_db
; named_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)); named_db=> INSERT INTObooks_table
VALUES (1, "The Shining", "Stephen King", 1977, "Supernatural fiction");
在 Amazon Redshift 中查询您的 Aurora 数据
将数据添加到 Aurora 数据库集群后,它会复制到 Amazon Redshift 中并准备好以供查询。
查询复制的数据
-
导航到 Amazon Redshift 控制台,然后从左侧导航窗格中选择查询编辑器 v2。
-
连接到您的集群或工作组,然后从下拉菜单中选择您通过集成创建的目标数据库(本示例中为 destination_database)。有关创建目标数据库的说明,请参阅在 Amazon Redshift 中创建目标数据库。
-
使用 SELECT 语句来查询您的数据。在本例中,您可以运行以下命令,从您在源 Aurora 数据库集群中创建的表中选择所有数据:
SELECT * from
my_db
."books_table
";-
是 Aurora 数据库模式名称。仅 MySQL 数据库需要此选项。my_db
-
是 Aurora 表名称。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。
Aurora 和 Amazon Redshift 数据库之间的数据类型差异
下表显示 Aurora MySQL 或 Aurora PostgreSQL 数据类型与相应 Amazon Redshift 数据类型的映射。Amazon Aurora 目前仅支持将这些数据类型用于零 ETL 集成。
如果您的源数据库集群中的表包含不受支持的数据类型,则该表将不同步并且 Amazon Redshift 目标无法使用该表。从源到目标的流式传输仍在继续,但数据类型不受支持的表不可用。要修复该表并使其在 Amazon Redshift 中可用,您必须手动恢复重大更改,然后通过运行 ALTER DATABASE...INTEGRATION
REFRESH
来刷新集成。
Aurora MySQL
Aurora 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 字节的字符串值 | |
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 | 作为值的半结构化数据或文档 |
Aurora PostgreSQL
Aurora PostgreSQL 的零 ETL 集成不支持自定义数据类型或由扩展创建的数据类型。
重要
Aurora PostgreSQL 与 Amazon Redshift 功能的零 ETL 集成已发布预览版。文档和特征都可能会更改。您仅可在测试环境中使用此功能,而不要在生产环境中使用。有关预览条款和条件,请参阅 AWS 服务条款
Aurora PostgreSQL 数据类型 | Amazon Redshift 数据类型 | 描述 | 限制 |
---|---|---|---|
bigint | BIGINT | 有符号的八字节整数 | |
bigserial | BIGINT | 有符号的八字节整数 | |
bit(n) | VARBYTE(n) | 长度可变的二进制值 | |
bit varying(n) | VARBYTE(n) | 长度可变的二进制值 | |
bit | VARBYTE(1024000) | 长度可变、最多 1,024,000 字节的字符串值 | |
布尔值 | BOOLEAN | 逻辑布尔值(true/false) | |
bytea | VARBYTE(1024000) | 长度可变、最多 1024000 字节的字符串值 | |
character(n) | CHAR(n) | 固定长度字符串 | |
character varying(n) | VARCHAR(65535) | 长度可变的字符串值 | |
date | DATE | 日历日期(年、月、日) |
|
double precision | DOUBLE PRECISION | 双精度浮点数 | 不支持亚正常值 |
整数 | INTEGER | 有符号的四字节整数 | |
money | DECIMAL(20,3) | 货币金额 | |
numeric(p,s) | DECIMAL (p,s) | 长度可变的字符串值 |
|
real | REAL | 单精度浮点数 | |
smallint | SMALLINT | 有符号的二字节整数 | |
smallserial | SMALLINT | 有符号的二字节整数 | |
Serial | INTEGER | 有符号的四字节整数 | |
文本 | VARCHAR(65535) | 长度可变、最多 65535 字节的字符串值 | |
time [ (p) ] [没有时区] | VARCHAR(19) | 长度可变、最多 19 字节的字符串值 | 不支持 Infinity 和 -Infinity 值 |
有时区的 time [(p)] | VARCHAR(22) | 长度可变、最多 22 字节的字符串值 | 不支持 Infinity 和 -Infinity 值 |
timestamp [(p)] [没有时区] | TIMESTAMP | 日期和时间(没有时区) |
|
有时区的 timestamp [(p)] | TIMESTAMPTZ | 日期和时间(有时区) |
|