ステップ 4: Amazon S3 から Amazon Redshift にデータをロードする - Amazon Redshift

ステップ 4: Amazon S3 から Amazon Redshift にデータをロードする

テーブルにデータをロードする場合、Amazon Redshift クエリエディタの 1 つを使用することが最も簡単な方法となります。クラスターを作成した後は、Amazon Redshift コンソールを使用して Amazon S3 からクラスターにデータをロードできます。

クエリエディタ v2 を使用することにより、[データのロード] ウィザードの使用時に、データのロードが簡単になります。詳細については、「クエリエディタ v2 を使用して独自のデータを Amazon S3 から Amazon Redshift にロードする」を参照してください。クエリエディタ v2 を使用してテーブルを作成し、データをロードすることもできます。詳細については、「クエリエディタにより Amazon S3 からサンプルデータをロードする」を参照してください。

Amazon S3 から Amazon Redshift に独自のデータをロードする際、Amazon Redshift には、指定された Amazon S3 バケットからデータをロードするための権限を持つ IAM ロールが必要です。

初めにデータベースに接続します。次に、データベースにいくつかのテーブルを作成します。その後、Amazon S3 から独自のデータを Amazon Redshift にロードします。クエリエディタ v2 の操作方法については、「Amazon Redshift 管理ガイド」の「クエリエディタ v2 の操作」を参照してください。

クエリエディタ v2 の [データのロード] ウィザードで生成および使用される COPY コマンドは、Amazon S3 からデータをロードするための COPY コマンド構文で使用できるすべてのパラメータをサポートしています。Amazon S3 からコピーおよびロードをするために使用される COPY コマンドと、そのオプションの詳細については、Amazon Redshift データベース開発者ガイドの「Amazon S3 からの COPY」を参照してください。

これでデータベース dev を作成し、それに接続できました。次に、このデータベースにテーブルを作成し、テーブルにデータをアップロードして、クエリを実行してみます。すぐにロードして使えるサンプルデータを Amazon S3 バケットに用意しました。

注記

SQL クライアントツールを使用している場合、SQL クライアントがクラスターに接続されていることを確認してください。

このステップを完了したら、次の点を実行できます。

注記

独自のデータをロードせずにクエリエディタ内でデータをクエリするには、[サンプルデータ] で [サンプルデータをロード] をクリックします。この設定により、クラスターの作成時に、Amazon Redshift のサンプルデータセットが、Amazon Redshift クラスターに自動的にロードされます。

Amazon S3 のサンプルデータをロードするには
  1. テーブルを作成します。

    Amazon Redshift クエリエディタを使用している場合は、次のテーブル作成ステートメントを個別にコピーして実行し、dev データベースにテーブルを作成します。構文の詳細については、Amazon Redshift データベースデベロッパーガイドCREATE TABLE を参照してください。

    create table users( userid integer not null distkey sortkey, username char(8), firstname varchar(30), lastname varchar(30), city varchar(30), state char(2), email varchar(100), phone char(14), likesports boolean, liketheatre boolean, likeconcerts boolean, likejazz boolean, likeclassical boolean, likeopera boolean, likerock boolean, likevegas boolean, likebroadway boolean, likemusicals boolean);
    create table venue( venueid smallint not null distkey sortkey, venuename varchar(100), venuecity varchar(30), venuestate char(2), venueseats integer);
    create table category( catid smallint not null distkey sortkey, catgroup varchar(10), catname varchar(10), catdesc varchar(50));
    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'));
    create table event( eventid integer not null distkey, venueid smallint not null, catid smallint not null, dateid smallint not null sortkey, eventname varchar(200), starttime timestamp);
    create table listing( listid integer not null distkey, sellerid integer not null, eventid integer not null, dateid smallint not null sortkey, numtickets smallint not null, priceperticket decimal(8,2), totalprice decimal(8,2), listtime timestamp);
    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);
  2. COPY コマンドを使用して Amazon S3 からサンプルデータをロードします。

    注記

    Amazon S3 または Amazon DynamoDB から大容量のデータセットを Amazon Redshift にロードする場合は、COPY コマンドの使用をお勧めします。COPY 構文の詳細については、Amazon Redshift データベースデベロッパーガイドCOPY を参照してください。

    1. 個別のサンプルデータファイルを含むファイル tickitdb.zip をダウンロードします。

    2. 個別のファイルを .zip 解凍して、自分の AWS リージョン の Amazon S3 バケットにある tickit フォルダにロードします。

    3. このチュートリアルの COPY コマンドを編集して、Amazon S3 バケットにあるファイルを指定します。Amazon S3 でファイルを管理する方法については、Amazon Simple Storage ServiceユーザーガイドS3 バケットの作成と設定を参照してください。

    4. サンプルデータをロードするために、ユーザーに代わってクラスターが Amazon S3 にアクセスするための認証を提供します。前の手順で作成し、クラスターにデフォルトとしてアタッチした IAM ロールを参照することで認証を実現します。

      COPY コマンドには、次の例のように、IAM ロールの Amazon リソースネーム (ARN)、バケット名、AWS リージョン のプレースホルダーが含まれます。

      copy users from 's3://<myBucket>/tickit/allusers_pipe.txt' iam_role default delimiter '|' region '<aws-region>';

      COPY コマンドは、次の例のようになります。

      copy users from 's3://<myBucket>/tickit/allusers_pipe.txt' iam_role default delimiter '|' region '<aws-region>';

      サンプルデータをロードするには、次の COPY コマンドの <myBucket>、および <aws-region> を実際の値に置き換え使用します。Amazon Redshift クエリエディタを使用している場合は、次のコマンドを個別に実行します。

      copy users from 's3://<myBucket>/tickit/allusers_pipe.txt' iam_role default delimiter '|' region '<aws-region>';
      copy venue from 's3://<myBucket>/tickit/venue_pipe.txt' iam_role default delimiter '|' region '<aws-region>';
      copy category from 's3://<myBucket>/tickit/category_pipe.txt' iam_role default delimiter '|' region '<aws-region>';
      copy date from 's3://<myBucket>/tickit/date2008_pipe.txt' iam_role default delimiter '|' region '<aws-region>';
      copy event from 's3://<myBucket>/tickit/allevents_pipe.txt' iam_role default delimiter '|' timeformat 'YYYY-MM-DD HH:MI:SS' region '<aws-region>';
      copy listing from 's3://<myBucket>/tickit/listings_pipe.txt' iam_role default delimiter '|' region '<aws-region>';
      copy sales from 's3://<myBucket>/tickit/sales_tab.txt' iam_role default delimiter '\t' timeformat 'MM/DD/YYYY HH:MI:SS' region '<aws-region>';