メニュー
Amazon Redshift
データベース開発者ガイド (API Version 2012年12月1日)

COPY

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

注記

Amazon Redshift スペクトルの外部テーブルは読み取り専用です。外部テーブルには COPY できません。

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 コマンドのデータソースは、category_pipe.txt という名前の Amazon S3 バケットの tickit フォルダ内の awssampledbuswest2 というデータファイルです。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 コマンドの使用方法の詳細については、次のトピックを参照してください。

このページの内容: