ステップ 4: Amazon S3 から Amazon Redshift にデータをロードする
クラスターを作成したら、Amazon S3 からデータベーステーブルにデータをロードできます。Amazon S3 からデータをロードする方法は複数あります。
SQL クライアントを使用して SQL CREATE TABLE コマンドを実行することで、データベースにテーブルを作成し、SQL COPY コマンドを使用して Amazon S3 からデータをロードできます。Amazon Redshift クエリエディタ v2 は、SQL クライアントです。
Amazon Redshift クエリエディタ v2 のロードウィザードを使用できます。
このチュートリアルでは、まず Amazon Redshift クエリエディタ v2 で SQL コマンドを実行してテーブルを作成し、データをコピーする方法を示します。Amazon Redshift コンソールのナビゲーションペインからクエリエディタ v2 を起動します。クエリエディタ v2 で、管理者ユーザー awsuser
として examplecluster
クラスターと dev
という名前のデータベースへの接続を作成します。このチュートリアルでは、接続の作成時に [データベースユーザー名を使用した一時的な認証情報] を選択します。Amazon Redshift クエリエディタ v2 の使用の詳細については、「Amazon Redshift 管理ガイド」の「Amazon Redshift データベースに接続する」を参照してください。
SQL コマンドを使用して Amazon S3 からデータをロードする
クエリエディタ v2 のクエリエディタペインで、examplecluster
クラスターと dev
データベースに接続していることを確認します。次に、データベースにテーブルを作成し、テーブルにデータをロードします。このチュートリアルでは、Amazon S3 バケットからデータをロード可能にし、多くの AWS リージョンからアクセスできるようにします。
次の手順では、テーブルを作成し、公開の Amazon S3 バケットからデータをロードします。
Amazon Redshift クエリエディタ v2 を使用して次の create table ステートメントをコピーして実行し、dev
データベースの public
スキーマにテーブルを作成します。構文の詳細については、Amazon Redshift データベースデベロッパーガイドの CREATE TABLE を参照してください。
クエリエディタ v2 などの SQL クライアントを使用してデータを作成およびロードするには
-
次の SQL コマンドを実行して
sales
テーブルを作成します。drop table if exists sales;
create table sales( salesid integer not null, listid integer not null distkey, sellerid integer not null, buyerid integer not null, eventid integer not null, dateid smallint not null sortkey, qtysold smallint not null, pricepaid decimal(8,2), commission decimal(8,2), saletime timestamp);
-
次の SQL コマンドを実行して
date
テーブルを作成します。drop table if exists date;
create table date( dateid smallint not null distkey sortkey, caldate date not null, day character(3) not null, week smallint not null, month character(5) not null, qtr character(5) not null, year smallint not null, holiday boolean default('N'));
-
COPY コマンドを使用して、Amazon S3 から
sales
テーブルをロードします。注記
Amazon S3 から Amazon Redshift に大容量のデータセットをロードする場合は、COPY コマンドを使用することをお勧めします。COPY 構文の詳細については、Amazon Redshift データベースデベロッパーガイドの COPY を参照してください。
サンプルデータをロードするために、ユーザーに代わってクラスターが Amazon S3 にアクセスするための認証を提供します。認証を行うには、クラスターの作成時に [IAM ロールをデフォルトとして作成する] を選択し、クラスターに対して作成して
default
として設定した IAM ロールを参照します。次の SQL コマンドを使用して
sales
テーブルをロードします。オプションで、Amazon S3 バケットからsales
テーブルのソースデータをダウンロードして表示できます。。 COPY sales FROM 's3://redshift-downloads/tickit/sales_tab.txt' DELIMITER '\t' TIMEFORMAT 'MM/DD/YYYY HH:MI:SS' REGION 'us-east-1' IAM_ROLE default;
-
次の SQL コマンドを使用して
date
テーブルをロードします。オプションで、Amazon S3 バケットからdate
テーブルのソースデータをダウンロードして表示できます。。 COPY date FROM 's3://redshift-downloads/tickit/date2008_pipe.txt' DELIMITER '|' REGION 'us-east-1' IAM_ROLE default;
クエリエディタ v2 を使用して Amazon S3 からデータをロードする
クエリエディタ v2 では、[データのロード] ウィザードを使用してデータを簡単にロードできます。クエリエディタ v2 の [データのロード] ウィザードで生成および使用する COPY コマンドは、Amazon S3 からデータをロードするための COPY コマンド構文で使用できるパラメータの多くをサポートしています。Amazon S3 からコピーおよびロードをするために使用される COPY コマンドと、そのオプションの詳細については、Amazon Redshift データベース開発者ガイドの「Amazon S3 からの COPY」を参照してください。
Amazon S3 から Amazon Redshift に独自のデータをロードする際、Amazon Redshift には、指定された Amazon S3 バケットからデータをロードするための権限を持つ IAM ロールが必要です。
このチュートリアルでは、まず Amazon Redshift クエリエディタ v2 を開いて、データベースに接続します。次に、ロードしたデータを格納するテーブルを作成します。その後、Amazon S3 から独自のデータを Amazon Redshift にロードします。クエリエディタ v2 の詳しい使用方法については、「Amazon Redshift 管理ガイド」の「データベースにデータをロードする」を参照してください。
クラスターで TICKIT データを作成します。
完全な TICKIT テーブルセットを作成してクラスターにデータをロードするには、以下の方法を使用できます。
Amazon Redshift コンソールでクラスターを作成する場合は、TICKIT のサンプルデータを同時にロードできます。Amazon Redshift コンソールで、[クラスター]、[クラスターを作成] の順に選択します。[サンプルデータ] セクションで、[サンプルデータをロード] を選択します。Amazon Redshift のサンプルデータセットは、クラスターの作成時に Amazon Redshift クラスターの
dev
データベースに自動的にロードされます。Amazon Redshift クエリエディタ v2 を使用すると、TICKIT データを sample_data_dev という名前のサンプルデータベースにロードできます。[sample_data_dev] データベース、[tickit] の順に移動し、コンテキストメニューバーから [サンプルノートブックを開く] を選択します。Amazon Redshift クエリエディタ v2 は、サンプルデータベースと共に tickit-sample-notebook という名前のサンプルノートブックを作成します。このノートブックを実行して、サンプルデータベース内のデータをクエリできます。
TICKIT データの詳細については、「Amazon Redshift データベース開発者ガイド」の「サンプルデータベース」を参照してください。