

# ソース RDS データベースへのデータの追加とクエリ
<a name="zero-etl.querying"></a>

Amazon RDS から Amazon Redshift にデータをレプリケートするゼロ ETL 統合の作成を終了するには、ターゲット送信先にデータベースを作成する必要があります。

Amazon Redshift と接続するため、Amazon Redshift クラスターまたはワークグループに接続し、統合識別子を参照してデータベースを作成します。これで、ソースの RDS データベースにデータを追加でき、Amazon Redshift または Amazon SageMaker で複製されることが確認できます。

**Topics**
+ [ターゲットデータベースの作成](#zero-etl.create-db)
+ [ソースデータベースへのデータの追加](#zero-etl.add-data-rds)
+ [Amazon Redshift での Amazon RDS データのクエリ](#zero-etl.query-data-redshift)
+ [RDS データベースと Amazon Redshift データベース間のデータタイプの相違点](#zero-etl.data-type-mapping)
+ [RDS for PostgreSQL の DDL オペレーション](#zero-etl.ddl-postgres)

## ターゲットデータベースの作成
<a name="zero-etl.create-db"></a>

Amazon Redshift へのデータの複製を開始する前に、統合を作成後、データベースをターゲットのデータウェアハウスに作成する必要があります。このデータベースには、統合識別子への参照が含まれている必要があります。Amazon Redshift コンソールまたはクエリエディタ v2 を使用して、データベースを作成することができます。

デスティネーションデータベースを作成する手順については、「[Amazon Redshift にデスティネーションデータベースを作成する](https://docs.aws.amazon.com/redshift/latest/mgmt/zero-etl-using.creating-db.html#zero-etl-using.create-db)」を参照してください。

## ソースデータベースへのデータの追加
<a name="zero-etl.add-data-rds"></a>

統合を設定した後で、データウェアハウスにレプリケートするデータを、ソースの RDS データベースに入力できます。

**注記**  
Amazon RDS のデータ型とターゲット分析ウェアハウスには違いがあります。データ型マッピングの表については、「[RDS データベースと Amazon Redshift データベース間のデータタイプの相違点](#zero-etl.data-type-mapping)」を参照してください。

まず、任意の MySQL クライアントを使用して、ソースデータベースに接続します。手順については、「[MySQL DB インスタンスへの接続](USER_ConnectToInstance.md)」を参照してください。

次に、テーブルを作成し、1 行のサンプルデータを挿入します。

**重要**  
テーブルにプライマリキーがあることを確認してください。そうしないと、ターゲットのデータウェアハウスに複製できません。

**RDS for MySQL**

次の例では、[MySQL Workbench ユーティリティ](https://dev.mysql.com/downloads/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');
```



**RDS for PostgreSQL**

次の例では、`[psql](https://www.postgresql.org/docs/current/app-psql.html)` PostgreSQL インタラクティブターミナルを使用しています。データベースに接続するときは、レプリケートするデータベース名を含めます。

```
psql -h mydatabase.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');
```

**RDS for Oracle**:

次の例では、SQL\$1Plus を使用して RDS for Oracle データベースに接続します。

```
sqlplus 'user_name@(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=dns_name)(PORT=port))(CONNECT_DATA=(SID=database_name)))'

SQL> 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));

SQL> INSERT INTO books_table VALUES (1, 'The Shining', 'Stephen King', 1977, 'Supernatural fiction');
```

## Amazon Redshift での Amazon RDS データのクエリ
<a name="zero-etl.query-data-redshift"></a>

RDS データベースにデータを追加すると、送信先データベースにレプリケートされ、クエリを実行できるようになります。

**複製されたデータをクエリするには**

1. Amazon Redshift コンソールに移動し、左側のナビゲーションペインから **[クエリエディタ v2]** を選択します。

1. クラスターまたはワークグループに接続し、ドロップダウンメニュー (この例では **destination\$1database**) から送信先データベース (統合から作成したもの) を選択します。デスティネーションデータベースを作成する手順については、「[Amazon Redshift にデスティネーションデータベースを作成する](https://docs.aws.amazon.com/redshift/latest/mgmt/zero-etl-using.creating-db.html#zero-etl-using.create-db)」を参照してください。

1. SELECT ステートメントを使用してデータをクエリします。この例では、次のコマンドを実行して、ソースの RDS データベースで作成したテーブルからすべてのデータを選択します。

   ```
   SELECT * from my_db."books_table";
   ```  
![\[クエリエディタ内で SELECT ステートメントを実行します。結果は、Amazon RDS データベースに追加されたサンプルデータの 1 行です。\]](http://docs.aws.amazon.com/ja_jp/AmazonRDS/latest/UserGuide/images/zero-etl-redshift-editor.png)
   + `my_db`  は RDS データベーススキーマ名です。
   + `books_table`  は RDS テーブル名です。

コマンドラインクライアントを使用してデータをクエリすることもできます。例えば、次のようになります。

```
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\$1case\$1sensitive\$1identifier](https://docs.aws.amazon.com/redshift/latest/dg/r_enable_case_sensitive_identifier.html)」を参照してください。

## RDS データベースと Amazon Redshift データベース間のデータタイプの相違点
<a name="zero-etl.data-type-mapping"></a>

以下の表は、RDS for MySQL、RDS for PostgreSQL、RDS for Oracle のデータタイプおよび対応する送信先のデータタイプのマッピングを示しています。*Amazon RDS は現在、ゼロ ETL 統合ではこれらのデータ型のみをサポートしています。*

ソースデータベースのテーブルにサポートされていないデータ型が含まれている場合、そのテーブルは同期されず、送信先ターゲットで使用できなくなります。ソースからターゲットへのストリーミングは継続されますが、サポートされていないデータ型のテーブルは使用できません。テーブルを修正してターゲット送信先で使用できるようにするには、変更内容を手動で元に戻し、`[ALTER DATABASE...INTEGRATION REFRESH](https://docs.aws.amazon.com/redshift/latest/dg/r_ALTER_DATABASE.html)` を実行して統合を更新する必要があります。

**注記**  
Amazon SageMaker Lakehouse とのゼロ ETL 統合を更新することはできません。代わりに、統合を削除して再度作成してみてください。

**Topics**
+ [RDS for MySQL](#zero-etl.data-type-mapping-mysql)
+ [RDS for PostgreSQL](#zero-etl.data-type-mapping-postgres)
+ [RDS for Oracle](#zero-etl.data-type-mapping-oracle)

### RDS for MySQL
<a name="zero-etl.data-type-mapping-mysql"></a>

[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/AmazonRDS/latest/UserGuide/zero-etl.querying.html)

### RDS for PostgreSQL
<a name="zero-etl.data-type-mapping-postgres"></a>

RDS for PostgreSQL のゼロ ETL 統合は、カスタムデータタイプ、または拡張機能で作成したデータタイプをサポートしていません。

[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/AmazonRDS/latest/UserGuide/zero-etl.querying.html)

### RDS for Oracle
<a name="zero-etl.data-type-mapping-oracle"></a>

**サポートされていないデータタイプ**

以下の RDS for Oracle データタイプは、Amazon Redshift ではサポートされていません。
+ `ANYDATA`
+ `BFILE`
+ `REF`
+ `ROWID`
+ `UROWID`
+ `VARRAY`
+ `SDO_GEOMETRY`
+ ユーザー定義のデータタイプ

**データタイプの相違点**

次の表は、RDS for Oracle がソースで Amazon Redshift がターゲットである場合に、ゼロ ETL 統合に影響するデータタイプの相違点を示しています。

[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/AmazonRDS/latest/UserGuide/zero-etl.querying.html)

## RDS for PostgreSQL の DDL オペレーション
<a name="zero-etl.ddl-postgres"></a>

Amazon Redshift は PostgreSQL から派生しているため、共通の PostgreSQL アーキテクチャに基づくいくつかの機能を RDS for PostgreSQL と共有しています。ゼロ ETL 統合は、これらの類似点を活用して、RDS for PostgreSQL から Amazon Redshift へのデータレプリケーションを合理化し、データベースを名前でマッピングして、共有のデータベース、スキーマ、テーブル構造を利用します。

RDS for PostgreSQL ゼロ ETL 統合を管理するときは、以下の点を考慮してください。
+ 分離はデータベースレベルで管理されます。
+ レプリケーションはデータベースレベルで行われます。
+ RDS for PostgreSQL データベースは Amazon Redshift データベースに名前でマッピングされるため、元の名前を変更すると、名前を変更した後の Redshift データベースにデータが流れます。

Amazon Redshift と RDS for PostgreSQL は類似していますが、重要な違いがあります。以下のセクションでは、一般的な DDL オペレーションに対する Amazon Redshift のシステムレスポンスについて概説します。

**Topics**
+ [データベースのオペレーション](#zero-etl.ddl-postgres-database)
+ [スキーマオペレーション](#zero-etl.ddl-postgres-schema)
+ [テーブルの操作](#zero-etl.ddl-postgres-table)

### データベースのオペレーション
<a name="zero-etl.ddl-postgres-database"></a>

次の表は、データベース DDL オペレーションのシステムレスポンスを示しています。

[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/AmazonRDS/latest/UserGuide/zero-etl.querying.html)

### スキーマオペレーション
<a name="zero-etl.ddl-postgres-schema"></a>

次の表は、スキーマ DDL オペレーションのシステムレスポンスを示しています。

[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/AmazonRDS/latest/UserGuide/zero-etl.querying.html)

### テーブルの操作
<a name="zero-etl.ddl-postgres-table"></a>

次の表は、テーブル DDL オペレーションのシステムレスポンスを示しています。

[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/AmazonRDS/latest/UserGuide/zero-etl.querying.html)