本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
將資料新增至來源 Aurora 資料庫叢集,並在 Amazon Redshift 中查詢
若要完成建立 零 ETL 整合,將資料從 Amazon Aurora 複製到 Amazon Redshift,您必須在 Amazon Redshift 中建立目的地資料庫。
首先,連線到您的 Amazon Redshift 叢集或工作群組,並建立參考整合識別碼的資料庫。然後,您可以將資料新增至來源 Aurora 資料庫叢集,並查看在 Amazon Redshift 中複寫的資料。
主題
在 Amazon Redshift 中建立目的地資料庫
在建立整合之後,您必須在目標資料倉儲中建立目的地資料庫,然後才能開始將資料複寫到 Amazon Redshift。此目的地資料庫必須包含整合識別符的參考。您可以使用 Amazon Redshift 主控台或查詢編輯器第 2 版來建立資料庫。
如需建立目的地資料庫的指示,請參閱在 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
;
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');
PostgreSQL
下列範例使用 psql
PostgreSQL 互動式終端機。連線至叢集時,請包含您在建立整合時指定的具名資料庫。
psql -h mycluster
.cluster-123456789012
.us-east-2.rds.amazonaws.com -p 5432 -U username
-d named_db
;
named_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));
named_db=> INSERT INTO books_table
VALUES (1, 'The Shining', 'Stephen King', 1977, 'Supernatural fiction');
在 資料
將資料新增至 Aurora 資料庫叢集後,資料會複寫至 Amazon Redshift,並準備好進行查詢。
查詢複製的資料
-
導覽至 Amazon Redshift 主控台,然後從左側導覽窗格中選擇查詢編輯器第 2 版。
-
連線到您的叢集或工作群組,然後從下拉式功能表中選擇您已從整合中建立的目的地資料庫 (在此範例中為 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 | 帶正負號的 4 位元組整數 | 無 |
SMALLINT | SMALLINT | 帶正負號的 2 位元組整數 | 無 |
TINYINT | SMALLINT | 帶正負號的 2 位元組整數 | 無 |
MEDIUMINT | INTEGER | 帶正負號的 4 位元組整數 | 無 |
BIGINT | BIGINT | 帶正負號的 8 位元組整數 | 無 |
INT UNSIGNED | BIGINT | 帶正負號的 8 位元組整數 | 無 |
TINYINT UNSIGNED | SMALLINT | 帶正負號的 2 位元組整數 | 無 |
MEDIUMINT UNSIGNED | INTEGER | 帶正負號的 4 位元組整數 | 無 |
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) | 變數長度字串值最多 65,535 個字元 | 無 |
TINYTEXT | VARCHAR(255) | 變數長度字串值最多 255 個字元 | 無 |
MEDIUMTEXT | VARCHAR(65535) | 變數長度字串值最多 65,535 個字元 | 無 |
LONGTEXT | VARCHAR(65535) | 變數長度字串值最多 65,535 個字元 | 無 |
ENUM | VARCHAR(1020) | 變數長度字串值最多 1,020 個字元 | 無 |
SET | VARCHAR(1020) | 變數長度字串值最多 1,020 個字元 | 無 |
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 資料類型 | 描述 | 限制 |
---|---|---|---|
陣列 | SUPER | 半結構化資料或文件作為值 | 無 |
bigint | BIGINT | 帶正負號的 8 位元組整數 | 無 |
bigserial | BIGINT | 帶正負號的 8 位元組整數 | 無 |
位元變化 (n) | VARBYTE(n) | 可變長度二進位值,最多 16,777,216 個位元組 | 無 |
bit(n) | VARBYTE(n) | 可變長度二進位值,最多 16,777,216 個位元組 | 無 |
位元、位元變化 | VARBYTE(16777216) | 可變長度二進位值,最多 16,777,216 個位元組 | 無 |
boolean | BOOLEAN | 邏輯布林值 (true/false) | 無 |
bytea | VARBYTE(16777216) | 可變長度二進位值,最多 16,777,216 個位元組 | 無 |
char(n) | CHAR(n) | 固定長度字元字串值,最多 65,535 個位元組 | 無 |
字元變化 (n) | VARCHAR(65535) | 變數長度字元字串值最多 65,535 個字元 | 無 |
cid | BIGINT |
帶正負號的 8 位元組整數 |
無 |
cidr |
VARCHAR(19) |
變數長度字串值最多 19 個字元 |
|
date | DATE | 日曆日期 (年、月、日) |
不支援大於 294,276 A.D. 的值 |
double precision | DOUBLE PRECISION | 雙精度浮點數 | 未完全支援的異常值 |
gtsvector |
VARCHAR(65535) |
變數長度字串值最多 65,535 個字元 |
無 |
inet |
VARCHAR(19) |
變數長度字串值最多 19 個字元 |
無 |
integer | INTEGER | 帶正負號的 4 位元組整數 | 無 |
int2vector |
SUPER | 半結構化資料或文件作為值。 | 無 |
間隔 | INTERVAL | 持續時間 | 僅支援指定年到月或日到秒限定詞的 INTERVAL 類型。 |
json | SUPER | 半結構化資料或文件作為值 | 無 |
jsonb | SUPER | 半結構化資料或文件作為值 | 無 |
jsonpath | VARCHAR(65535) | 變數長度字串值最多 65,535 個字元 | 無 |
macaddr |
VARCHAR(17) | 變數長度字串值最多 17 個字元 | 無 |
macaddr8 |
VARCHAR(23) | 變數長度字串值最多 23 個字元 | 無 |
money | DECIMAL(20,3) | 貨幣金額 | 無 |
name | VARCHAR(64) | 變數長度字串值最多 64 個字元 | 無 |
numeric(p,s) | DECIMAL(p,s) | 使用者定義的固定精確度值 |
|
oid | BIGINT | 帶正負號的 8 位元組整數 | 無 |
向量 | SUPER | 半結構化資料或文件作為值。 | 無 |
pg_brin_bloom_summary | VARCHAR(65535) | 變數長度字串值最多 65,535 個字元 | 無 |
pg_dependencies | VARCHAR(65535) | 變數長度字串值最多 65,535 個字元 | 無 |
pg_lsn | VARCHAR(17) | 變數長度字串值最多 17 個字元 | 無 |
pg_mcv_list | VARCHAR(65535) | 變數長度字串值最多 65,535 個字元 | 無 |
pg_ndistinct | VARCHAR(65535) | 變數長度字串值最多 65,535 個字元 | 無 |
pg_node_tree | VARCHAR(65535) | 變數長度字串值最多 65,535 個字元 | 無 |
pg_snapshot | VARCHAR(65535) | 變數長度字串值最多 65,535 個字元 | 無 |
real | REAL | 單精度浮點數 | 未完全支援的異常值 |
反射器 | VARCHAR(65535) | 變數長度字串值最多 65,535 個字元 | 無 |
smallint | SMALLINT | 帶正負號的 2 位元組整數 | 無 |
smallserial | SMALLINT | 帶正負號的 2 位元組整數 | 無 |
serial | INTEGER | 帶正負號的 4 位元組整數 | 無 |
text | VARCHAR(65535) | 變數長度字串值最多 65,535 個字元 | 無 |
tid | VARCHAR(23) | 變數長度字串值最多 23 個字元 | 無 |
time 【(p)】 不含時區 | VARCHAR(19) | 變數長度字串值最多 19 個字元 | Infinity 不支援 和 -Infinity 值 |
time 【(p)】 與時區 | VARCHAR(22) | 變數長度字串值最多 22 個字元 | Infinity 不支援 和 -Infinity 值 |
沒有時區的時間戳記 【(p)】 | TIMESTAMP | 日期和時間 (未使用時區) |
|
具有時區的時間戳記 【(p)】 | TIMESTAMPTZ | 日期和時間 (包含時區) |
|
查詢 | VARCHAR(65535) | 變數長度字串值最多 65,535 個字元 | 無 |
Tvector | VARCHAR(65535) | 變數長度字串值最多 65,535 個字元 | 無 |
txid_snapshot | VARCHAR(65535) | 變數長度字串值最多 65,535 個字元 | 無 |
uuid | VARCHAR(36) | 變數長度 36 字元字串 | 無 |
xid | BIGINT | 帶正負號的 8 位元組整數 | 無 |
xid8 | DECIMAL(20, 0) | 修正精確度小數位數 | 無 |
xml | VARCHAR(65535) | 變數長度字串值最多 65,535 個字元 | 無 |
Aurora PostgreSQL 的 DDL 操作
Amazon Redshift 衍生自 PostgreSQL,因此由於其常見的 PostgreSQL 架構,它與 Aurora PostgreSQL 共用多種功能。零 ETL 整合利用這些相似性來簡化從 Aurora PostgreSQL 到 Amazon Redshift 的資料複寫、依名稱映射資料庫,並使用共用資料庫、結構描述和資料表結構。
管理 Aurora PostgreSQL 零 ETL 整合時,請考慮下列事項:
-
隔離是在資料庫層級管理。
-
複寫會在資料庫層級發生。
-
Aurora PostgreSQL 資料庫會依名稱對應至 Amazon Redshift 資料庫,如果原始資料庫重新命名,資料會流向對應的重新命名 Redshift 資料庫。
雖然兩者相似,但 Amazon Redshift 和 Aurora PostgreSQL 仍有重要的差異。下列各節概述常見 DDL 操作的 Amazon Redshift 系統回應。
資料庫操作
下表顯示資料庫 DDL 操作的系統回應。
DDL 操作 | Redshift 系統回應 |
---|---|
CREATE DATABASE |
無操作 |
DROP DATABASE |
Amazon Redshift 會捨棄目標 Redshift 資料庫中的所有資料。 |
RENAME DATABASE |
Amazon Redshift 會捨棄原始目標資料庫中的所有資料,並重新同步新目標資料庫中的資料。如果新的資料庫不存在,您必須手動建立它。如需說明,請參閱在 Amazon Redshift 中建立目的地資料庫。 |
結構描述操作
下表顯示結構描述 DDL 操作的系統回應。
DDL 操作 | Redshift 系統回應 |
---|---|
CREATE SCHEMA |
無操作 |
DROP SCHEMA |
Amazon Redshift 會捨棄原始結構描述。 |
RENAME SCHEMA |
Amazon Redshift 會捨棄原始結構描述,然後重新同步新結構描述中的資料。 |
資料表操作
下表顯示資料表 DDL 操作的系統回應。
DDL 操作 | Redshift 系統回應 |
---|---|
CREATE TABLE |
Amazon Redshift 會建立資料表。 有些操作會導致資料表建立失敗,例如建立沒有主索引鍵的資料表或執行宣告性分割。如需詳細資訊,請參閱 Aurora PostgreSQL 限制 和 對 Aurora 與 Amazon Redshift 的零ETL整合進行故障診斷。 |
DROP TABLE |
Amazon Redshift 會捨棄資料表。 |
TRUNCATE TABLE |
Amazon Redshift 會截斷資料表。 |
ALTER TABLE
(RENAME... ) |
Amazon Redshift 會重新命名資料表或資料欄。 |
ALTER TABLE (SET
SCHEMA ) |
Amazon Redshift 會在原始結構描述中捨棄資料表,並重新同步新結構描述中的資料表。 |
ALTER TABLE (ADD PRIMARY
KEY ) |
Amazon Redshift 新增主索引鍵並重新同步資料表。 |
ALTER TABLE (ADD
COLUMN ) |
Amazon Redshift 會將資料欄新增至資料表。 |
ALTER TABLE (DROP
COLUMN ) |
如果資料欄不是主索引鍵資料欄,Amazon Redshift 會將其捨棄。否則,它會重新同步資料表。 |
ALTER TABLE (SET
LOGGED/UNLOGGED ) |
如果您將資料表變更為已記錄,Amazon Redshift 會重新同步資料表。如果您將資料表變更為未記錄,Amazon Redshift 會捨棄資料表。 |