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

COPY

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

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

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

Note

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

COPY 構文

COPY table-name 
[ column-list ]
FROM data_source
[ WITH ] CREDENTIALS [AS] 'aws-auth-args'
[ [ FORMAT ] [ AS ] data_format ] 
[ [ parameter [ argument ] [, ... ] ]

COPY 構文概要

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

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

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

必須パラメータ

COPY コマンドの必須パラメータは 3 つだけです。

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

COPY table-name 
FROM data-source
CREDENTIALS 'aws-auth-args';

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

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 catdemo
from 's3://awssampledbuswest2/tickit/category_pipe.txt'
credentials 'aws_iam_role=arn:aws:iam::<aws-account-id>:role/<role-name>'
region 'us-west-2';

IAM ロールを作成する手順については、「ステップ 2 IAM ロールの作成」を参照してください。 他の AWS リージョンからのデータのロード方法を含む、サンプルデータをロードするための COPY コマンドの使用方法の詳細な手順については、「 ステップ 4: サンプルデータをロードする」を参照してください。

table-name

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

FROM data_source

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

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

CREDENTIALS 'aws-auth-args'

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

データがクライアント側の暗号化を使って Amazon S3 に暗号化されている場合、aws-auth-args パラメータ文字列

オプションのパラメータ

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

列のマッピング

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

データ形式パラメータ

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

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

データ変換パラメータ

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

データのロード操作

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

このページの内容: