AWS Data Pipeline
開発者ガイド (API バージョン 2012-10-29)

Amazon RDS to Amazon Redshift (Amazon RDS から Amazon Redshift へのコピー) テンプレート

以下の 2 つのテンプレートでは、変換スクリプトを使用して、Amazon RDS MySQL から Amazon Redshift にテーブルをコピーします。変換スクリプトでは、ソーステーブルのスキーマを使用して Amazon Redshift テーブルが作成されます。以下の点に注意してください。

  • 分散キーを指定しなかった場合は、Amazon RDS テーブルの最初のプライマリキーが分散キーとして設定されます。

  • Amazon Redshift へのコピーを実行するときに、Amazon RDS MySQL のテーブルにある列を省略することはできません。

  • (オプション) テンプレートに含まれるパラメータの 1 つとして、Amazon RDS MySQL から Amazon Redshift への列データ型マッピングを指定することができます。指定した場合、スクリプトではこれを使用して Amazon Redshift テーブルが作成されます。

Overwrite_Existing の Amazon Redshift 挿入モードを使用する場合:

  • 分散キーを指定しなかった場合は、Amazon RDS MySQL テーブルのプライマリキーが使用されます。

  • テーブルに複合プライマリキーが存在し、分散キーが指定されていない場合は、最初の複合プライマリキーが分散キーとして使用されます。Amazon Redshift テーブルでは、最初の複合キーのみがプライマリキーとして設定されます。

  • 分散キーが指定されず、Amazon RDS MySQL テーブルにプライマリキーが存在しない場合、コピーオペレーションは失敗します。

Amazon Redshift の詳細については、以下のトピックを参照してください。

次の表では、スクリプトでデータ型がどのように変換されるかを示しています。

MySQL と Amazon Redshift の間のデータ型変換

MySQL のデータ型 Amazon Redshift データ型

TINYINT,

TINYINT (size)

SMALLINT

MySQL: -128 ~ 127。最大桁数を括弧内に指定できます。

Amazon Redshift: INT2。符号付き 2 バイト整数

TINYINT UNSIGNED、

TINYINT (size) UNSIGNED

SMALLINT

MySQL: 0 ~ 255 UNSIGNED。最大桁数を括弧内に指定できます。

Amazon Redshift: INT2。符号付き 2 バイト整数

SMALLINT,

SMALLINT(size)

SMALLINT

MySQL: -32768 ~ 32767 normal。最大桁数を括弧内に指定できます。

Amazon Redshift: INT2。符号付き 2 バイト整数

SMALLINT UNSIGNED、

SMALLINT(size) UNSIGNED、

INTEGER

MySQL: 0 ~ 65535 UNSIGNED*。最大桁数を括弧内に指定できます。

Amazon Redshift: INT4。符号付き 4 バイト整数

MEDIUMINT、

MEDIUMINT(size)

INTEGER

MySQL: 388608 ~ 8388607。最大桁数を括弧内に指定できます。

Amazon Redshift: INT4。符号付き 4 バイト整数

MEDIUMINT UNSIGNED、

MEDIUMINT(size)

UNSIGNED

INTEGER

MySQL: 0 ~ 16777215。最大桁数を括弧内に指定できます。

Amazon Redshift: INT4。符号付き 4 バイト整数

INT,

INT(size)

INTEGER

MySQL: 147483648 ~ 2147483647

Amazon Redshift: INT4。符号付き 4 バイト整数

INT UNSIGNED、

INT(size) UNSIGNED

BIGINT

MySQL: 0 ~ 4294967295

Amazon Redshift: INT8。符号付き 8 バイト整数

BIGINT

BIGINT(size)

BIGINT

Amazon Redshift: INT8。符号付き 8 バイト整数

BIGINT UNSIGNED

BIGINT(size) UNSIGNED

VARCHAR(20*4)

MySQL: 0 ~ 18446744073709551615

Amazon Redshift: 同等のネイティブ型がないため、char 配列を使用します。

FLOAT

FLOAT(size,d)

FLOAT(size,d) UNSIGNED

REAL

最大桁数を size パラメータで指定できます。小数点以下の最大桁数は d パラメータで指定します。

Amazon Redshift: FLOAT4

DOUBLE(size,d)

DOUBLE PRECISION

最大桁数を size パラメータで指定できます。小数点以下の最大桁数は d パラメータで指定します。

Amazon Redshift: FLOAT8

DECIMAL(size,d)

DECIMAL(size,d)

固定小数点数を使用するための、文字列として格納される DOUBLE。最大桁数を size パラメータで指定できます。小数点以下の最大桁数は d パラメータで指定します。

Amazon Redshift: 同等のネイティブ型がありません。

CHAR(size)

VARCHAR(size*4)

固定長の文字列を格納します。これには、文字、数字、特殊文字を含めることができます。固定サイズは括弧内パラメータで指定します。255 文字まで格納できます。

右側にスペースが埋め込まれます。

Amazon Redshift: CHAR データ型ではマルチバイト文字がサポートされていないため、VARCHAR が使用されます。

1 文字あたりの最大バイト数は 4(RFC3629 を参照)で、文字テーブルは U+10FFFF に制限されます。

VARCHAR(size) VARCHAR(size*4)

255 文字まで格納できます。

VARCHAR では、以下の無効な UTF-8 コードポイントがサポートされていません: 0xD800 ~ 0xDFFF(バイトシーケンス: ED A0 80 ~ ED BF BF)、0xFDD0 ~ 0xFDEF、0xFFFE、0xFFFF(バイトシーケンス: EF B7 90 ~ EF B7 AF、EF BF BE、EF BF BF)

TINYTEXT VARCHAR(255*4) 最大長 255 文字の文字列を格納します
TEXT VARCHAR(max)

最大長 65,535 文字の文字列を格納します。

MEDIUMTEXT VARCHAR(max)

0 ~ 16,777,215 文字

LONGTEXT VARCHAR(max) 0 ~ 4,294,967,295 文字

BOOLEAN

BOOL

TINYINT(1)

BOOLEAN

MySQL: これらの型は TINYINT(1) と同義です。値ゼロは false と見なされます。ゼロ以外の値は true と見なされます。

BINARY[(M)] varCHAR(255)

M は 0 ~ 255 バイト、FIXED

VARBINARY(M) VARCHAR(max)

0 ~ 65,535 バイト

TINYBLOB VARCHAR(255) 0 ~ 255 バイト
BLOB VARCHAR(max)

0 ~ 65,535 バイト

MEDIUMBLOB VARCHAR(max)

0 ~ 16,777,215 バイト

LONGBLOB VARCHAR(max)

0 ~ 4,294,967,295 バイト

ENUM VARCHAR(255*2) リテラル ENUM 文字列の長さではなく、テーブル定義に含まれる ENUM 値の数に制限があります。
SET VARCHAR(255*2) ENUM と同じ。
DATE DATE

(YYYY-MM-DD)

「1000-01-01」から「9999-12-31」

TIME VARCHAR(10*4)

(hh:mm:ss)

"-838:59:59" ~ "838:59:59"

DATETIME TIMESTAMP

(YYYY-MM-DD hh:mm:ss)

"1000-01-01 00:00:00" ~ "9999-12-31 23:59:59"

TIMESTAMP TIMESTAMP

(YYYYMMDDhhmmss)

19700101000000 ~ 2037+

YEAR VARCHAR(4*4)

(YYYY)

1900 ~ 2155

column SERIAL

ID 生成 / この列はコピーされるため、この属性は OLAP データウェアハウスでは必要ありません。

変換時に SERIAL キーワードは追加されません。

SERIAL は、実際には SEQUENCE というエンティティです。テーブルの残りの部分からは独立して存在しています。

column GENERATED BY DEFAULT

これは下記と同等です:

CREATE SEQUENCE name; CREATE TABLE table ( column INTEGER NOT NULL DEFAULT nextval(name) );

column BIGINT UNSIGNED NOT NULL AUTO_INCREMENT UNIQUE

ID 生成 / この列はコピーされるため、この属性は OLAP データウェアハウスでは必要ありません。

このため、変換時に SERIAL キーワードは追加されません。

SERIAL は、実際には SEQUENCE というエンティティです。テーブルの残りの部分からは独立して存在しています。

column GENERATED BY DEFAULT

これは下記と同等です:

CREATE SEQUENCE name; CREATE TABLE table ( column INTEGER NOT NULL DEFAULT nextval(name) );

ZEROFILL 変換時に ZEROFILL キーワードは追加されません。

INT UNSIGNED ZEROFILL NOT NULL

ZEROFILL では、フィールドに表示される値に、列定義で指定された表示幅までゼロが埋め込まれます。値の桁数が表示幅を超えても、切り捨ては行われません。ZEROFILL の使用は、UNSIGNED を暗黙に示しています。