メニュー
Amazon Redshift
データベース開発者ガイド (API Version 2012-12-01)

COPY

データファイルまたは Amazon DynamoDB テーブルから、テーブルにデータをロードします。ファイルは Amazon Simple Storage Service (Amazon S3) バケット、Amazon EMR (Amazon EMR) クラスターまたは Secure Shell (SSH) 接続を使用したリモートホストに配置できます。

COPY コマンドは、新しい入力データをテーブルの既存の行に追加します。

どのソースからであっても、単一の入力行の最大サイズは 4 MB です。

注記

COPY コマンドを使用するには、Amazon Redshift テーブルに対する INSERT 権限が必要です。

COPY 構文

Copy
COPY table-name [ column-list ] FROM data_source authorization [ [ FORMAT ] [ AS ] data_format ] [ parameter [ argument ] [, ... ] ]

COPY 構文概要

テーブル名、データソース、データにアクセスするための承認というわずか 3 つのパラメーターで、COPY 操作を実行できます。

Amazon Redshift は COPY コマンドの機能を拡張し、マルチデータリソースから複数のサービスデータ形式でのデータのロード、ロードデータへのアクセス制御、データ変換の管理、ロード操作の管理を可能にします。

このセクションでは、COPY コマンドの必須パラメーターおよびオプションのパラメーターを機能別にまとめて示します。以降のトピックでは、各パラメーターの解説と、さまざまなオプションの連携方法を説明します。アルファベット順のパラメーターリストで、パラメーターの解説に直接進むこともできます。

必須パラメーター

COPY コマンドには 3 つの要素が必要です。

最も単純な COPY コマンドは次の形式を使用します。

Copy
COPY table-name FROM data-source authorization;

次の例では、CATDEMO というテーブルを作成し、Amazon S3 の category_pipe.txt.

Copy
create table catdemo(catid smallint, catgroup varchar(10), catname varchar(10), catdesc varchar(50));
というデータファイルからサンプルデータを含むデータをロードします。

以下の例では、COPY コマンドのデータソースは、awssampledbuswest2 という名前の Amazon S3 バケットの tickit フォルダ内の category_pipe.txt というデータファイルです。COPY コマンドは、AWS Identity and Access Management (IAM) ロールを通して、Amazon S3 にアクセスする権限があります。 クラスターに Amazon S3 にアクセスする権限を持つ既存の IAM ロールがある場合、次の COPY コマンドに ロールの Amazon Resource Name (ARN) を置換して実行できます。

Copy
copy catdemo from 's3://awssampledbuswest2/tickit/category_pipe.txt' iam_role 'arn:aws:iam::<aws-account-id>:role/<role-name>' region 'us-west-2';

IAM ロールを作成する手順については、Amazon Redshift 入門ガイド のステップ 2: IAM ロールを作成するを参照してください。COPY コマンドを使用してサンプルデータをロードする完全な手順 (他の AWS リージョンからデータをロードする手順を含む) については、Amazon Redshift 入門ガイド のステップ 6: Amazon S3 のサンプルデータをロードするを参照してください。

table-name

COPY コマンドのターゲットテーブル名です。テーブルはすでにデータベースに存在する必要があります。テーブルは一時テーブルまたは永続的テーブルです。COPY コマンドは、新しい入力データをテーブルの既存の行に追加します。

FROM data_source

ターゲットテーブルにロードするソースデータの場所です。

最もよく使われるデータリポジトリは Amazon S3 バケットです。Amazon EMR クラスター、Amazon EC2 インスタンス、またはクラスターが SSH 接続を使用してアクセスできるリモートホストにあるデータファイルからロードすることもできます。または、DynamoDB テーブルから直接ロードすることもできます。

承認

他の AWS リソースにアクセスするための認証と許可のためにクラスターが使用する方法を示す句です。 COPY コマンドには、Amazon S3、Amazon EMR、Amazon DynamoDB、Amazon EC2 を含む別の AWS リソースのデータにアクセスするための承認が必要になります。クラスターにアタッチされた IAM ロールを参照して、または IAM ユーザーのアクセスキー ID とシークレットアクセスキーを提供して、そのアクセス権限を提供できます。

オプションのパラメーター

オプションで、COPY でターゲットテーブルの列にフィールドデータをマッピングする方法の指定、COPY コマンドで正しく読み込み解析できるソースデータ属性の定義、ロード処理中に COPY コマンドが実行する操作の管理ができます。

列のマッピング

デフォルトでは、COPY はデータファイルで発生したフィールドと同じ順序でターゲットテーブルの列にフィールド値を挿入します。デフォルトの列順序が機能しない場合は、列リストを指定するか、JSONPath 式を使用してソースデータのフィールドをターゲット列にマッピングできます。

データ形式パラメーター

固定幅、文字区切り形式、カンマ区切り値 (CSV) のテキストファイル、JSON 形式、または Avro ファイルからデータをロードできます。 

デフォルトでは、COPY コマンドはソースデータを文字区切り形式 UTF-8 のテキストファイルと見なします。デフォルトの区切り文字はパイプ文字です。ソースデータが別の形式である場合は、以下のパラメーターを使用してデータ形式を指定します。

データ変換パラメーター

テーブルをロードする際に、COPY は暗黙的にソースデータの文字列をターゲット列のデータ型に変換しようとします。デフォルトの動作とは異なる変換を指定する必要がある場合、またはデフォルトの変換がエラーになった場合、次のパラメーターを指定してデータ変換を管理できます。

データのロード操作

次のパラメーターを指定して、トラブルシューティングのためにロード操作のデフォルトの動作を管理したり、ロード時間を短縮したりします。

COPY コマンドを使用する

COPY コマンドの使用方法の詳細については、次のトピックを参照してください。

このページの内容: