データのロード - Amazon Redshift

データのロード

Amazon Redshift データベースにデータをロードするには、いくつかの方法があります。データのロード元として一般的なソースの 1 つは、Amazon S3 ファイルです。次の表は、Amazon S3 ソースから開始する場合に使用するいくつかの方法を示しています。

使用する方法 説明 方法が必要になる場合

COPY コマンド

バッチファイルの取り込みを実行して、Amazon S3 ファイルからデータをロードします。この方法では、Amazon Redshift の並列処理機能を活用します。詳細については、「COPY コマンドを使ってデータをロードする」を参照してください。

バッチファイルの取り込みを手動で開始するための基本的なデータロード要件が必要な場合に使用します。この方法は、主にカスタムおよびサードパーティのファイル取り込みパイプラインで使用するか、1 回限りまたはアドホックのファイル取り込みワークロードで使用します。

COPY... CREATE JOB コマンド (自動コピー)

追跡中の Amazon S3 パスで新しいファイルを作成すると、COPY コマンドが自動的に実行されます。詳細については、「Amazon S3 からの継続的なファイル取り込み (プレビュー)」を参照してください。

Amazon S3 で新しいファイルを作成するときに、ファイル取り込みパイプラインでデータを自動的に取り込む必要がある場合に使用します。Amazon Redshift は、データの重複を防ぐために、取り込んだファイルを追跡し続けます。この方法では、Amazon S3 バケット所有者による設定が必要です。

データレイククエリからのロード

外部テーブルを作成して Amazon S3 ファイルに対してデータレイククエリを実行し、INSERT INTO コマンドを実行してデータレイククエリの結果をローカルテーブル内にロードします。詳細については、「Redshift Spectrum 用の外部テーブルの作成」を参照してください。

次のいずれかのシナリオで使用します。

  • AWS Glue およびオープンテーブル形式 (Apache Iceberg、Apache Hudi、Delta Lake など) からロードする場合。

  • ソースファイルを部分的に取り込む必要がある場合 (WHERE 句を実行して特定の行を取り込む場合など)。

  • 特定の列の取り込み (SELECT コマンドの実行など) や、外出先での基本的なデータ変換 (ソースファイルの値に対する基本的なオペレーションの適用、UDF の呼び出しなど) を行うために、より柔軟性が必要な場合。

その他の検討可能な方法

ストリーミング取り込み

ストリーミング取り込みでは、Amazon Kinesis Data Streams や Amazon Managed Streaming for Apache Kafka から、Amazon Redshift でプロビジョニングされたビューや Redshift Serverless マテリアライズドビューに、ストリームデータを低レイテンシーかつ高速で取り込むことができます。詳細については、Amazon Kinesis Data Streams からストリーミング取り込みを開始する方法およびAmazon Managed Streaming for Apache Kafka からのストリーミング取り込みを開始するを参照してください。

データを最初に Amazon S3 のファイルにストリーミングし、次に Amazon S3 からロードする場合のユースケースで検討します。Amazon S3 にデータを保持する必要がない場合は、通常、データを Amazon Redshift 内に直接ストリーミングすることを検討できます。

データレイククエリの実行

テーブルの内容をローカルテーブルに取り込む代わりに、データレイクテーブルから直接クエリを実行します。詳細については、「Amazon Redshift Spectrum を使用した外部データのクエリ」を参照してください。

Amazon Redshift でのローカルテーブルクエリのパフォーマンスを必要としないユースケースで使用します。

Amazon Redshift クエリエディタ v2 を使用したバッチロード

Amazon Redshift クエリエディタ v2 で、バッチファイル取り込みワークロードを視覚的に準備して実行できます。詳細については、「Amazon Redshift 管理ガイド」の「S3 からデータをロードする」を参照してください。

クエリエディタ v2 で COPY ステートメントを準備する場合、COPY ステートメントの準備プロセスを簡素化するビジュアルツールが必要なときに使用します。

Amazon Redshift クエリエディタ v2 を使用したローカルファイルからのデータのロード

デスクトップから Amazon Redshift テーブルにファイルを直接アップロードできます。Amazon S3 にファイルを手動でアップロードする必要はありません。詳細については、「Amazon Redshift 管理ガイド」の「ローカルファイル設定とワークフローからのデータのロード」を参照してください。

1 回限りのクエリのためにローカルコンピュータからファイルをすばやくロードする必要がある場合に使用します。この方法の場合、Amazon Redshift クエリエディタ v2 は、お客様所有の Amazon S3 バケットにファイルを一時的に保存し、この Amazon S3 パスを使用してコピーコマンドを実行します。

COPY コマンドは、テーブルをロードする最も効率的な方法です。INSERT コマンドを使ってデータをテーブルに追加することもできます。ただし、COPY コマンドを使ったほうが効率的です。COPY コマンドは、複数のデータファイルまたは複数のデータストリームから同時に読み込むことができます。Amazon Redshift はワークロードを Amazon Redshift ノードに割り当て、ノードスライス間での行のソートやデータの分散など、ロードオペレーションを並列で実行します。

注記

Amazon Redshift Spectrum の外部テーブルは読み込み専用です。外部テーブルには COPY または INSERT できません。

Amazon Redshift が他の AWS リソースのデータにアクセスするには、これらのリソースにアクセスして必要なアクションを実行するためのアクセス許可が必要です。AWS Identity and Access Management (IAM) を使用すると、Amazon Redshift のリソースとデータに対するユーザーのアクセスを制限できます。

初回のデータロードの後、大量のデータを追加、変更、削除した場合、VACUUM コマンドを実行してデータを再編成し、削除後の領域を利用可能な状態に戻してください。また、ANALYZE コマンドを実行し、テーブル統計を更新します。