メニュー
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_access_credentials'
[ [ FORMAT ] [ AS ] data_format ] 
[ [ parameter [ argument ] [, ... ] ]

COPY 構文概要

COPY 操作はわずか 3 つのパラメータ(テーブル名、Amazon S3 バケット名および AWS 認証情報)で実行できます。

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

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

必須パラメータ

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

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

COPY table_name 
FROM data_source
CREDENTIALS 'aws_access_credentials';

次の例は、CATDEMO というテーブルを作成し、Amazon S3 にある category_pipe.txt という名前のデータファイルからサンプルデータとともにデータをロードします。

create table catdemo(catid smallint, catgroup varchar(10), catname varchar(10), catdesc varchar(50));

copy catdemo
from 's3://awssampledbuswest2/tickit/category_pipe.txt'
credentials 'aws_access_key_id=<access-key-id>;aws_secret_access_key=<secret-access-key>';

クラスターが米国西部(オレゴン)の AWS リージョンにある場合は、以前の COPY コマンドの AWS 認証情報を代入して実行できます。他の AWS リージョンからのデータのロード方法を含むサンプルデータのロード方法の詳細な手順については、「 ステップ 4: サンプルデータをロードする」を参照してください。

table_name

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

FROM data_source

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

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

CREDENTIALS 'aws_access_credentials'

COPY コマンドで Amazon S3、Amazon EMR、DynamoDB を含む他の AWS リポジトリのデータにアクセスするには、有効な AWS ユーザー認証情報が必要です。セキュリティと柔軟性を強化するために、AWS Identity and Access Management(IAM)認証情報の使用をお勧めします。また、COPY では一時認証情報を使用してロードデータへのアクセスを制限できます。Amazon S3 にあるロードデータを暗号化することもできます。

オプションのパラメータ

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

列のマッピング

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

データ形式パラメータ

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

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

データ変換パラメータ

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

データのロード操作

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

このページの内容: