ステップ 5: Amazon S3 からサンプルデータをロードする - Amazon Redshift

ステップ 5: Amazon S3 からサンプルデータをロードする

これでデータベース 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 にアクセスするための認証を提供します。ロールベースの認証またはキーベースの認証を提供できます。ロールベースの認証を使用することをお勧めします。ステップ 1: IAM ロールを作成する で作成した myRedshiftRole IAM ロールを使用して、Amazon Redshift が Amazon S3 バケットからデータをロードすることを許可します。両方の認証タイプの詳細については、Amazon Redshift データベースデベロッパーガイドCREDENTIALS を参照してください。

      この手順では、前の手順で作成し、クラスターにアタッチした IAM ロールを参照して、認証を提供します。

      注記

      Amazon S3 への適切なアクセス許可がない場合、COPY コマンドを実行すると、S3ServiceException: Access Denied というエラーメッセージが表示されます。COPY コマンドの IAM 許可の詳細については、Amazon Redshift データベースデベロッパーガイドCOPY を参照してください。

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

      copy users from 's3://<myBucket>/tickit/allusers_pipe.txt' credentials 'aws_iam_role=<iam-role-arn>' delimiter '|' region '<aws-region>';

      IAM ロールを使用してアクセスを許可するには、CREDENTIALS パラメータ文字列の <iam-role-arn> を、ステップ 1: IAM ロールを作成する で作成した IAM ロールのロール ARN と置き換えます。

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

      copy users from 's3://<myBucket>/tickit/allusers_pipe.txt' credentials 'aws_iam_role=arn:aws:iam::123456789012:role/myRedshiftRole' delimiter '|' region '<aws-region>';

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

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