すべてのプロダクト
Search
ドキュメントセンター

AnalyticDB:Amazon RedshiftクラスターからAnalyticDB for PostgreSQLインスタンスへのデータの移行

最終更新日:Sep 24, 2024

Alibaba Cloud Data Online Migrationまたはossimportツールを使用して、Amazon RedshiftクラスターからAnalyticDB for PostgreSQLインスタンスにデータを移行できます。

前提条件

  • Amazon Redshiftクラスターが作成されました。

  • Amazon Redshiftデータのエクスポートに使用されるAmazon S3サービスが有効化されています。

  • Alibaba Cloud Object Storage Service (OSS) が有効化されています。 詳細については、「」をご参照ください。OSSとは

  • OSSバケットが作成されます。 詳細は、「バケットの作成」をご参照ください。

    説明

    その後のデータインポートを容易にするために、AnalyticDB for PostgreSQLインスタンスと同じリージョンにOSSバケットを作成することを推奨します。

  • AnalyticDB for PostgreSQLインスタンスが作成されました。 インスタンス仕様の選択方法については、このトピックの「仕様の選択」をご参照ください。

仕様の選択

このセクションでは、ソースAmazon Redshiftクラスターの仕様に基づいてAnalyticDB for PostgreSQLインスタンスの仕様を選択する方法について説明します。

Amazon Redshiftクラスターは、リーダーノードと複数のコンピューティングノードで構成されています。

  • リーダーノード: AnalyticDB for PostgreSQLインスタンス内のコーディネーターノードとして機能します。 リーダーノードは、クライアントと通信し、クエリ実行プランを分析および開発し、データベース操作を実行します。

  • 計算ノード: AnalyticDB for PostgreSQLインスタンス内の計算ノードのセットとして機能します。 Amazon Redshiftクラスターの各コンピュートノードはスライスに分割されます。 各ノードスライスは、AnalyticDB for PostgreSQLインスタンス内の計算ノードとして機能し、データストレージとクエリの計算を実行します。

AnalyticDB for PostgreSQLインスタンスを作成するときに、ソースAmazon Redshiftクラスターの各ノードスライスの仕様に基づいて、インスタンスのノード仕様を選択できます。

例:

Amazon Redshiftクラスターは4つのコンピューティングノードで構成されています。 各計算ノードは、2つのノードスライスからなる。 各ノードスライスの仕様は、2コア、16 GBメモリ、1テラバイトストレージです。

AnalyticDB for PostgreSQLインスタンスを作成する場合、コンピューティングノードの数を8に、ノード仕様を2コアと16 GBメモリに、シングルノードストレージを1,000 GBに設定できます。

説明
  • AnalyticDB For PostgreSQLインスタンスの作成方法については、「インスタンスの作成」をご参照ください。

  • ストレージタイプをESSD (Enhanced SSD) に設定することを推奨します。 ESSDは、ウルトラディスクよりも優れたI/Oパフォーマンスを提供します。

手順

手順1: Amazon RedshiftクラスターからAmazon S3バケットへのデータのエクスポート

UNLOADステートメントを実行して、データをエクスポートできます。 詳細については、「UNLOAD」をご参照ください。

構文:

UNLOAD ('select-statement')
TO 's3://object-path/name-prefix'
authorization
[ option [ ... ] ]

where option is
{ [ FORMAT [ AS ] ] CSV | PARQUET
| PARTITION BY ( column_name [, ... ] ) [ INCLUDE ]
| MANIFEST [ VERBOSE ] 
| HEADER           
| DELIMITER [ AS ] 'delimiter-char' 
| FIXEDWIDTH [ AS ] 'fixedwidth-spec'   
| ENCRYPTED [ AUTO ]
| BZIP2  
| GZIP 
| ZSTD
| ADDQUOTES 
| NULL [ AS ] 'null-string'
| ESCAPE
| ALLOWOVERWRITE
| CLEANPATH
| PARALLEL [ { ON | TRUE } | { OFF | FALSE } ]
| MAXFILESIZE [AS] max-size [ MB | GB ] 
| REGION [AS] 'Amazon-region' }
説明
  • FORMAT AS PARQUETまたはCSVパラメーターを使用して、エクスポートされるデータの形式を指定することを推奨します。

  • より多くのファイルを生成してデータのエクスポート効率を向上させるには、PARALLEL ONパラメーターを指定してデータを並列にエクスポートすることを推奨します。

  • より多くのファイルを生成するには、MAXFILESIZEパラメーターを指定してファイルのサイズを制限することを推奨します。 推奨値は、AnalyticDB for PostgreSQLインスタンス内のノード数の整数倍です。 これにより、データがOSS外部テーブルからAnalyticDB for PostgreSQLインスタンスに並行してインポートされるときのデータインポート効率が向上します。

ステップ2: Amazon S3からOSSへのデータの同期

Alibaba Cloud Data Online Migrationまたはossimportツールを使用して、Amazon S3からOSSにデータを同期できます。

データオンライン移行

  1. データ転送コンソールにログインします。

  2. データ同期用のソースデータアドレスと宛先データアドレスを作成します。

    1. 左側のナビゲーションウィンドウで、[データオンライン移行] > [データアドレス] を選択します。

    2. [データアドレスの作成] をクリックして、ソースデータアドレスを作成します。

    3. [データアドレスの作成] パネルで、次の表に示すパラメーターを設定し、[OK] をクリックします。

      パラメーター

      必須

      説明

      データ型

      継続する

      ソースデータアドレスのタイプ。 [AWS S3] を選択します。

      データ名

      継続する

      ソースデータアドレスの名前。 名前の長さは 3 ~ 63 文字である必要があります。 ハイフン (-) とアンダースコア (_) 以外の特殊文字は使用できません。

      Endpoint

      継続する

      Amazon Simple Storage Service (Amazon S3) のエンドポイント。 詳細については、「」をご参照ください。Amazon S3コンソールでAmazon S3アクセスポイントを使用する.

      重要

      前のリンクの情報は、元のサーバーの変更により古くなっている可能性があり、参照専用です。

      Bucket

      継続する

      移行するデータが保存されているAmazon S3バケットの名前。

      説明

      バケット名に、スペース、改行、タブ文字などの無効な文字を含めることはできません。

      プレフィックス

      継続する

      ソースデータアドレスのプレフィックス。 プレフィックスを指定して、特定のデータを移行できます。

      • プレフィックスを指定すると、プレフィックスで指定されたディレクトリ内のデータのみが移行されます。 プレフィックスはスラッシュ (/) で始めることはできず、スラッシュ (/) で終わる必要があります。

      • プレフィックスを指定しない場合、Amazon S3バケット内のすべてのデータが移行されます。

      Access Key IdおよびSecret Access Key

      継続する

      ソースデータアドレスからデータを読み取るために使用されるIdentity and access Management (IAM) ユーザーのアクセスキーペア。 Amazon S3はアクセスキーペアを使用して、IAMユーザーがソースデータアドレスからデータを読み取る権限を持っているかどうかを確認します。

    4. [データアドレスの作成] をもう一度クリックして、宛先データアドレスを作成します。

    5. [データアドレスの作成] パネルで、次の表に示すパラメーターを設定し、[OK] をクリックします。

      パラメーター

      必須

      説明

      データ型

      継続する

      宛先データアドレスのタイプ。 [OSS] を選択します。

      データ名

      継続する

      ソースデータアドレスの名前。 名前の長さは 3 ~ 63 文字である必要があります。 ハイフン (-) とアンダースコア (_) 以外の特殊文字は使用できません。

      データリージョン

      継続する

      宛先データアドレスが存在する領域。

      転送アクセラレーションの有効化

      継続しない

      データオンライン移行をObject Storage Service (OSS) の転送アクセラレーション機能と一緒に使用する場合は、バケットの転送アクセラレーション機能を有効にします。 転送アクセラレーション機能は、有効になってから30分以内に有効になります。 この機能を有効にした後、移行ジョブを作成する前に30分待ちます。

      重要

      転送アクセラレーション機能を使用してOSSバケットにアクセスする場合、追加の転送アクセラレーション料金が請求されます。 詳細については、「転送アクセラレーション」をご参照ください。

      OSSエンドポイント

      継続する

      宛先データアドレスのエンドポイント。 宛先データアドレスが存在するリージョンに基づいてエンドポイントを選択します。 詳細は、「リージョンとエンドポイント」をご参照ください。

      説明

      サードパーティのクラウドサービスからOSSにデータを移行する場合、インターネット経由でパブリックエンドポイントからOSSにアクセスする必要があります。

      Access Key IdとAccess Key Secret

      継続する

      宛先データアドレスにデータを書き込むために使用されるRAMユーザーのAccessKeyペア。 AccessKeyペアは、RAMユーザーが宛先データアドレスにデータを書き込む権限を持っているかどうかを確認するためにOSSによって使用されます。

      OSSバケット

      継続する

      データの移行先のOSSバケット。

      OSSプレフィックス

      継続しない

      宛先データアドレスのプレフィックス。

      • プレフィックスを指定すると、ソースデータは指定されたディレクトリに移行されます。 値はスラッシュ (/) で始めることはできず、スラッシュ (/) で終わる必要があります。 例: data/to/oss/

      • プレフィックスを指定しない場合、ソースデータはターゲットバケットのルートディレクトリに移行されます。

      重要

      ソースファイルの名前がスラッシュ (/) で始まる場合、宛先データアドレスを指定するときにOSSプレフィックスを指定する必要があります。 OSSプレフィックスが指定されていない場合、移行ジョブは失敗します。 たとえば、移行するファイルの名前が /test/test.pngの場合、OSS /などのossプレフィックスを指定する必要があります。 移行が完了すると、ファイルの名前が /test/test.pngからoss // test/test.pngに変わります。

  3. オンライン移行ジョブを作成します。

    1. 左側のナビゲーションウィンドウで、[データオンライン移行] > [移行ジョブ] を選択します。

    2. [ジョブの作成] をクリックします。

    3. [ジョブの作成] パネルで、移行サービスの条件を読み、[上記の条件に同意してデータトランスポートサービスを有効にする] を選択します。 次に、[次へ] をクリックします。

    4. [料金リマインダー] メッセージで、[はい、先に進む] をクリックします。

    5. [ジョブの作成] パネルで、次の表に示すパラメーターを設定し、[次へ] をクリックします。

      パラメーター

      必須

      説明

      ジョブ名

      継続する

      ソースデータアドレスの名前。 名前の長さは 3 ~ 63 文字である必要があります。 ハイフン (-) とアンダースコア (_) 以外の特殊文字は使用できません。

      ソースデータアドレス

      継続する

      作成したソースデータのアドレス。

      宛先データアドレス

      継続する

      作成した宛先データアドレス。

      指定ディレクトリ

      継続しない

      ファイルおよびサブディレクトリが移行される、または移行されないディレクトリ。 有効な値:

      • フィルター処理しない: ソースデータアドレスからすべてのデータを移行します。

      • Exclude: 指定されたディレクトリ内のファイルまたはサブディレクトリは移行されません。

        たとえば、root_dir/ ディレクトリ内のroot_dir/bad_sub1/ およびroot_dir/bad_sub2/ を除くすべてのディレクトリを移行します。 この場合、このメソッドを選択し、bad_sub1/ およびbad_sub2/ を指定できます。

      • Contain: 指定されたディレクトリ内のファイルとサブディレクトリのみを移行します。

        たとえば、root_dir/ ディレクトリのroot_dir/good_sub1/root_dir/good_sub2/ のみを移行します。 この場合、このメソッドを選択し、good_sub1/ およびgood_sub2/ を指定できます。

      説明
      • ディレクトリ名には、数字と文字のみを使用できます。 特殊文字を使用すると、移行ジョブが失敗することがあります。

      • ディレクトリ名は、スラッシュ (/) またはバックスラッシュ (\) で始めることはできません。また、ダブルスラッシュ (//) 、ダブルピリオド (..) 、またはダブル引用符 (") を含めることはできません。 指定したすべてのディレクトリ名で構成される文字列の長さは10 KBを超えることはできません。

      • ディレクトリ名はスラッシュ (/) で終わる必要があります。 たとえば、ディレクトリ名としてdocs/ を指定できます。

      • ExcludeまたはContainタイプのディレクトリは、最大20個まで指定できます。

      移行タイプ

      継続する

      データ移行モード。 有効な値:

      • Full: システムはすべてのデータをソースデータアドレスから宛先データアドレスに移行します。 [ファイルの開始時刻] パラメーターを設定する必要があります。 システムは、最終変更時刻が指定された時刻より後のすべてのデータを移行します。 すべてのデータが移行された後、移行ジョブは終了します。

        移行ジョブの完了後にソースデータアドレスのデータを変更した場合、別のジョブを送信してすべてのデータを移行できます。 この場合、システムは、変更されたデータのみを移行する。

      • 増分: [移行間隔] および [移行時間] パラメーターに指定した値に基づいて、移行ジョブが実行されます。

        • [ファイルの開始時刻] パラメーターを設定する必要があります。 最初の移行中に、最終変更時刻が指定された時刻より後のすべてのデータが移行されます。 最初の移行が完了すると、[移行間隔] パラメーターに指定した値に基づいて増分移行が実行されます。 増分移行ごとに、以前の移行開始後および現在の移行開始前に作成または変更されたデータのみが移行されます。

        • Migration TimesパラメーターをNに設定した場合、完全移行は1回実行され、増分移行は (N - 1) 回実行されます。

          たとえば、現在の時刻は2019年3月10日08:00で、Migration Intervalパラメーターを1に、Migration Timesパラメーターを5に、Start time Point of Fileパラメーターを2019年3月5日08:00に設定します。 最初の移行が開始されると、最終変更時刻が2019年3月5日08:00から2019年3月10日08:00の間にあるすべてのファイルが移行されます。 この例では、最初の移行は完了するのに1時間かかり、2番目の移行は2019年3月10日10:00に開始されます。 08:00から10:00までの期間は、最初の移行プロセスでは1時間、移行間隔では1時間です。 2回目の移行中に、最終変更時刻が2019年3月10日08:00から2019年3月10日10:00の間にあるファイルが移行されます。 移行ジョブは、1つの完全移行と4つの増分移行で構成されます。

      重要

      完全移行または増分移行が開始される前に、システムはソースデータアドレスのファイルと宛先データアドレスのファイルを比較します。 ソースファイルの名前がターゲットファイルと同じ場合、次のいずれかの条件が満たされると、ターゲットファイルは上書きされます。

      • ソースデータアドレスと宛先データアドレスのファイルのContent-Type値は異なります。

      • ソースデータアドレスにおけるファイルの最終変更時刻は、宛先データアドレスにおけるファイルの最終変更時刻よりも遅い。

      • ソースデータアドレスにおけるファイルのサイズは、宛先データアドレスにおけるファイルのサイズとは異なる。

      ファイルの開始時刻

      継続する

      移行するデータをフィルタリングする時間。 システムは、指定された時間の後に作成または変更されたデータを移行します。 有効な値:

      • All: すべてのファイルを移行します。

      • 割り当て: 指定された時間以降に作成または変更されたファイルのみを移行します。

        たとえば、時刻を11月1日08:00:00に設定した場合、2018日08:00:00以降に作成または変更されたファイルのみが移行され2018。

      移行間隔

      このパラメーターは、Migration TypeパラメーターをIncrementalに設定した場合に必要です。

      デフォルト値は1で、最大値は24です。 単位:時間。

      移行時間

      このパラメーターは、Migration TypeパラメーターをIncrementalに設定した場合に必要です。

      デフォルト値は1で、最大値は30です。

      ファイルの上書き方法

      継続する

      宛先データアドレスのファイルの名前と同じ名前のソースデータアドレスのファイルを処理するために使用されるメソッド。 有効な値:

      • LastModified: ソースファイルの名前がターゲットファイルと同じ場合、システムはファイルのLastModifiedプロパティで示される最終変更時刻を比較します。

        • ソースデータアドレスにおけるファイルの最終変更時刻が、宛先データアドレスにおけるファイルの最終変更時刻よりも遅い場合、ソースデータアドレスにおけるファイルが移行され、宛先データアドレスにおけるファイルが上書きされる。

        • ソースデータアドレスにおけるファイルの最終変更時刻が、宛先データアドレスにおけるファイルの最終変更時刻よりも早い場合、ソースデータアドレスにおけるファイルは移行されず、宛先データアドレスにおけるファイルが保持される。

        • 2つのファイルの最終変更時刻が同じ場合、システムはファイルのSizeプロパティとContent-Typeプロパティの値をチェックします。

          2つのファイルのサイズとコンテンツタイプの値が同じ場合、ソースデータアドレスのファイルは移行されません。 2つのファイルが少なくとも1つのプロパティの値が異なる場合、ソースデータアドレスのファイルは移行され、宛先データアドレスのファイルは上書きされます。

      • 条件: ソースファイルの名前がターゲットファイルと同じ場合、ファイルのLastModified、Size、およびContent-Typeプロパティの値が比較されます。

        • 2つのファイルのすべてのプロパティ値が同じ場合、ソースデータアドレスのファイルは移行されません。

        • 2つのファイルが少なくとも1つのプロパティの値が異なる場合、ソースデータアドレスのファイルは移行され、宛先データアドレスのファイルは上書きされます。

      • すべて: ソースファイルの名前がターゲットファイルと同じ場合、システムは比較を実行せず、ターゲットファイルをソースファイルで直接上書きします。

      • いいえ: ソースファイルの名前がターゲットファイルと同じ場合、システムは比較を実行せず、移行中のソースファイルを直接スキップします。

        警告
        • [条件] または [LastModified] を選択した場合、以前のファイルが後のファイルを上書きする可能性があります。

        • [条件] または [LastModified] を選択した場合、ソースファイルに [LastModified][サイズ] 、および [Content-Type] の値が設定されていることを確認します。 そうしないと、上書きポリシーが無効になり、データが期待どおりに移行されなくなります。

    6. [パフォーマンス] ステップで、[データ予測] セクションに移動し、[データサイズ] および [ファイル数] パラメーターを設定します。

      説明

      移行ジョブが確実に成功するために、移行するデータの量をできるだけ正確に見積もることをお勧めします。 詳細については、「移行ジョブの準備」をご参照ください。

    7. (オプション) [パフォーマンス] ステップで、[フロー制御] セクションに移動し、[時間範囲] および [最大フロー (MB /秒)] パラメーターを指定して、[追加] をクリックします。

      説明

      ビジネスの継続性を確保するために、トラフィック変動に基づいて [時間範囲] および [最大フロー] パラメーターを設定することを推奨します。

    8. [作成] をクリックし、移行ジョブが完了するまで待ちます。

ossimport

  1. スタンドアロンモードでossimportをダウンロードしてインストールします。 詳細については、「概要」をご参照ください。

    スタンドアロンモードのossimportツールには、次のファイル構造があります。

    ossimport
    ├── bin
    │ └── ossimport2.jar  # The JAR package that contains the Master, Worker, TaskTracker, and Console modules.
    ├── conf
    │ ├── local_job.cfg   # The job configuration file.
    │   └── sys.properties  # The configuration file that contains system parameters.
    ├── console.bat         # The Windows command line utility that is used to run tasks in a distributed manner.
    ├── console.sh          # The Linux command line utility that is used to run tasks in a distributed manner.
    ├── import.bat          # The script that automatically imports files based on the conf/local_job.cfg configuration file in Windows. The configuration file contains parameters that specify data migration operations such as start, migration, verification, and retry.
    ├── import.sh           # The script that automatically imports files based on the conf/local_job.cfg configuration file in Linux. The configuration file contains parameters that specify data migration operations, such as start, migration, verification, and retry.
    ├── logs                # The directory that contains logs.
    └ ── README.md # The file that provides a description of ossimport. We recommend that you read the file before you use ossimport.
  2. スタンドアロンモードでossimportを設定します。

    conf/local_job.cfg設定ファイルの次のパラメーターのみを変更する必要があります。

    srcType=s3
    srcAccessKey=<Your AWS access key>
    srcSecretKey=<Your AWS secret key>
    srcDomain=<The domain name that corresponds to the region in which the Amazon S3 bucket is deployed>
    srcBucket=<The name of the Amazon S3 bucket>
    destAccessKey=<Your Alibaba Cloud AccessKey ID>
    destSecretKey=<Your Alibaba Cloud AccessKey secret>
    destDomain=<The endpoint that corresponds to the region in which the OSS bucket is deployed>
    destBucket=<The name of the OSS bucket>
    destPrefix=
    isSkipExistFile=true

    詳細については、「概要」をご参照ください。

  3. ossimportを実行してデータをOSSに同期します。 スタンドアロンモードでossimportを使用する方法については、「スタンドアロン展開」をご参照ください。

手順3: 宛先テーブルの作成

AnalyticDB for PostgreSQLインスタンスに宛先テーブルを作成し、Amazon Redshiftからデータをロードします。 ターゲットテーブルは、ソーステーブルと同じスキーマを持つ必要があります。 詳細については、「CREATE TABLE」をご参照ください。

スキーマ、テーブル、関数、ビューなどのデータベースオブジェクトに関する情報を変更して、DDLステートメントを変換します。 詳細については、このトピックの「DDLステートメントの変換」セクションを参照してください。

手順4: OSSからAnalyticDB for PostgreSQLインスタンスへのデータのインポート

COPYステートメントまたはOSS外部テーブルを使用して、データをAnalyticDB for PostgreSQLにインポートできます。

DDLステートメントの変換

Amazon RedshiftのDDLステートメントは、AnalyticDB for PostgreSQLのDDLステートメントとはわずかに異なり、データを移行する前に変換する必要があります。

スキーマの作成

AnalyticDB for PostgreSQLのCREATE SCHEMAステートメントを実行して、スキーマを作成します。 例:

CREATE SCHEMA schema1 AUTHORIZATION xxxpoc;
GRANT ALL ON SCHEMA schema1 TO xxxpoc;
GRANT ALL ON SCHEMA schema1 TO public;
COMMENT ON SCHEMA model IS 'for xxx migration  poc test';

CREATE SCHEMA oss_external_table AUTHORIZATION xxxpoc;

関数の作成

AnalyticDB for PostgreSQLは、Amazon Redshiftの特定のSQL関数をサポートしていません。 SQL関数を変更または書き直す必要があります。 例:

  • CONVERT_TIMEZONE(a,b,c) 関数を次の関数に置き換えます。

    timezone(b, timezone(a,c))
  • GETDATE() 関数を次の関数に置き換えます。

    current_timestamp(0):timestamp
  • ユーザー定義関数 (UDF) を置換または最適化します。 次のサンプルコードは、Amazon RedshiftのUDFの例を示しています。

    CREATE OR REPLACE FUNCTION public.f_jdate(dt timestamp without time zone)
    RETURNS character varying AS
    '      from datetime import timedelta, datetime
           if dt.hour < 4:
                  d = timedelta(days=-1)
                  dt = dt + d
           return str(dt.date())'
    LANGUAGE plpythonu IMMUTABLE;
    COMMIT;

    上記の関数を次の関数に置き換えます。

    to_char(a - interval '4 hour', 'yyyy-mm-dd')
  • 他のAmazon Redshift関数を置き換えます。

    標準のPostgreSQL関数の詳細については、「関数と演算子」をご参照ください。 次の関数など、AnalyticDB for PostgreSQLでサポートされていないAmazon RedshiftのSQL関数を変更または書き直すことができます。

CREATE TABLE

  • テーブルの名前を変更します。

    Amazon Redshiftテーブルの名前の長さは最大127文字ですが、AnalyticDB for PostgreSQLテーブルの名前の長さは最大63文字です。 テーブル、関数、ビューなどのデータベースオブジェクトの名前が63文字を超える場合は、余分な文字を削除する必要があります。

  • 圧縮アルゴリズムを変更します。

    Amazon RedshiftのCREATE TABLEステートメントのENCODE XXXを次の句に置き換えます。

    WITH (COMPRESSTYPE={ZLIB|ZSTD|RLE_TYPE|NONE})

    AnalyticDB For PostgreSQLでサポートされている圧縮アルゴリズムの詳細については、「テーブルのストレージモデルの定義」トピックの「データ圧縮」セクションを参照してください。

  • 配布キーを変更します。

    Amazon Redshiftは3つの配布キーをサポートしています。 詳細については、「配布スタイル」をご参照ください。 次のルールに基づいて配布キーを変更する必要があります。

    • EVEN distribution: Districted RANDOMLYを使用します。

    • キー配布: DISTRIBUTED BY (column, [ ... ] ) を使用します。

    • すべての配布: DISTRIBUTED REPLICATEDを使用します。

  • ソートキーを変更します。

    Amazon Redshiftのソートキー句 [ COMPOUND | INTERLEAVED ] SORTKEY (column_name [, ...] ) ]COMPOUNDまたはINTERLEAVEDオプションを次の句に置き換えます。

    order by (column, [ ... ])

例:

  • 例 1:

    次のサンプルコードは、Amazon RedshiftのCREATE TABLEステートメントの例を示しています。

    CREATE TABLE schema1.table1
    (
        filed1 VARCHAR(100) ENCODE lzo,
        filed2 INTEGER DISTKEY,
        filed3 INTEGER,
        filed4 BIGINT ENCODE lzo,
        filed5 INTEGER
    )
    INTERLEAVED SORTKEY
    (
        filed1,
        filed2
    );

    上記のステートメントを、AnalyticDB for PostgreSQLの次のCREATE TABLEステートメントに変換します。

    CREATE TABLE schema1.table1
    (
        filed1 VARCHAR(100) ,
        filed2 INTEGER,
        filed3 INTEGER,
        filed4 BIGINT,
        filed5 INTEGER
    )
    WITH(APPENDONLY=true,ORIENTATION=column,COMPRESSTYPE=zstd)
    DISTRIBUTED BY (filed2)
    ORDER BY (filed1, filed2);
    
    -- Sort
    SORT schema1.table1;
    MULTISORT schema1.table1;
  • 例 2:

    次のサンプルコードは、Amazon RedshiftのCREATE TABLEステートメントの例であり、ENCODEオプションとSORTKEYオプションが含まれています。

    CREATE TABLE schema2.table2
    (
        filed1 VARCHAR(50) ENCODE lzo,
        filed2 VARCHAR(50) ENCODE lzo,
        filed3 VARCHAR(20) ENCODE lzo,
    )
    DISTSTYLE EVEN
    INTERLEAVED SORTKEY
    (
        filed1
    );

    上記のステートメントを、AnalyticDB for PostgreSQLの次のCREATE TABLEステートメントに変換します。

    CREATE TABLE schema2.table2
    (
        filed1 VARCHAR(50),
        filed2 VARCHAR(50),
        filed3 VARCHAR(20),
    )
    WITH(APPENDONLY=true, ORIENTATION=column, COMPRESSTYPE=zstd)
    DISTRIBUTED randomly
    ORDER BY (filed1);
    
    -- Sort
    SORT schema2.table2;
    MULTISORT schema2.table2;
    説明

    ソートキーの詳細については、「ソートキーとラフセットインデックスを使用して列指向テーブルでクエリを高速化する」をご参照ください。

ビューの作成

Amazon RedshiftのCREATE VIEWステートメントを、AnalyticDB for PostgreSQL構文に準拠したSQLステートメントに変換します。 変換ルールは、CREATE TABLE文の変換ルールに似ています。

説明

WITH NO SCHEMA BINDING句はサポートされていません。