Schritt 4: Daten aus Amazon S3 in Amazon Redshift laden - Amazon Redshift

Schritt 4: Daten aus Amazon S3 in Amazon Redshift laden

Die Verwendung eines der Abfrage-Editoren von Amazon Redshift ist der einfachste Weg, Daten in Tabellen zu laden. Nachdem Sie Ihren Cluster erstellt haben, können Sie Daten aus Amazon S3 über die Amazon-Redshift-Konsole in Ihren Cluster laden.

Verwenden Sie den Abfrage-Editor v2, der das Laden von Daten mit dem Assistenten „Load data“ (Daten laden) vereinfacht. Weitere Informationen finden Sie unter Laden Ihrer Daten aus Amazon S3 in Amazon Redshift mit dem Abfrage-Editor v2. Oder verwenden Sie den Abfrage-Editor v2, um Tabellen zu erstellen und Ihre Daten zu laden. Weitere Informationen finden Sie unter Laden von Beispieldaten aus Amazon S3 mit dem Abfrage-Editor.

Um Ihre eigenen Daten aus Amazon S3 in Amazon Redshift zu laden, erfordert Amazon Redshift eine IAM-Rolle, die über die benötigten Berechtigungen zum Laden von Daten aus dem angegebenen Amazon S3 Bucket verfügt.

Stellen Sie zuerst eine Verbindung zu einer Datenbank her. Erstellen Sie als Nächstes einige Tabellen in der Datenbank. Laden Sie dann Ihre eigenen Daten aus Amazon S3 in Amazon Redshift. Weitere Informationen zur Arbeit mit dem Abfrage-Editor v2 finden Sie unter Arbeiten mit dem Abfrage-Editor v2 im Amazon-Redshift-Clusterverwaltungshandbuch.

Der COPY-Befehl, der im Assistenten „Load data“ (Daten laden) des Abfrage-Editors v2 generiert und verwendet wird, unterstützt alle Parameter, die für die COPY-Befehlssyntax zum Laden von Daten aus Amazon S3 verfügbar sind. Weitere Informationen zum COPY-Befehl und zu seinen Optionen zum Kopieren und Laden aus Amazon S3 finden Sie unter COPY aus dem Amazon Simple Storage Service im Datenbankentwicklerhandbuch zu Amazon Redshift.

Sie haben bereits eine Datenbank mit dem Namen dev erstellt und die Verbindung aufgebaut. Als Nächstes legen Sie Tabellen in der Datenbank an, laden Daten hoch und führen testweise eine Abfrage durch. Die Beispieldaten werden der Einfachheit halber in einem Amazon-S3-Bucket bereitgestellt.

Anmerkung

Wenn Sie ein SQL-Client-Tool verwenden, vergewissern Sie sich, dass der SQL-Client mit dem Cluster verbunden ist.

Nachdem Sie diesen Schritt abgeschlossen haben, können Sie die folgenden Schritte ausführen:

Anmerkung

Um zu versuchen, Daten im Abfrage-Editor abzufragen, ohne eigene Daten zu laden, wählen Sie Load sample data (Musterdaten laden) unter Sample data (Beispieldaten). Wenn Sie dies tun, lädt Amazon Redshift den Beispieldatensatz während der Clustererstellung automatisch in Ihren Amazon-Redshift-Cluster.

So laden Sie Beispieldaten aus Amazon S3

  1. Erstellen Sie Tabellen.

    Wenn Sie den Amazon-Redshift-Abfrage-Editor verwenden, kopieren Sie die folgenden Create-Table-Anweisungen einzeln und führen Sie sie aus, um Tabellen in der dev-Datenbank zu erstellen. Weitere Informationen zur Syntax finden Sie unter CREATE TABLE im Datenbankentwicklerhandbuch zu Amazon Redshift.

    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. Laden Sie mit dem COPY-Befehl Beispieldaten aus Amazon S3.

    Anmerkung

    Es wird empfohlen, zum Laden von großen Datenmengen in Amazon Redshift aus Amazon S3 oder Amazon DynamoDB den COPY-Befehl zu verwenden. Weitere Informationen zur COPY-Syntax finden Sie unter COPY im Datenbankentwicklerhandbuch zu Amazon Redshift.

    1. Laden Sie die Datei tickitdb.zip herunter. Diese enthält einzelne Beispieldatendateien.

    2. Entpacken Sie die Datei und laden Sie die einzelnen Dateien in einen tickit-Ordner in Ihrem Amazon S3 Bucket in Ihrer AWS-Region.

    3. Bearbeiten Sie die COPY-Befehle in diesem Lernprogramm, sodass sie auf die Dateien in Ihrem Amazon-S3-Bucket zeigen. Weitere Informationen zum Verwalten von Dateien mit Amazon S3 finden Sie unter Erstellen und Konfigurieren eines S3 Buckets im Benutzerhandbuch zu Amazon Simple Storage Service.

    4. Stellen Sie Authentifizierung für Ihren Cluster um Zugriff auf Amazon S3 in Ihrem Namen bereit, um die Beispieldaten zu laden. Sie stellen die Authentifizierung bereit, indem Sie auf die IAM-Rolle verweisen, die Sie in vorherigen Schritten als Standard für Ihren Cluster erstellt und festgelegt haben.

      Die COPY-Befehle enthalten einen Platzhalter für den Amazon-Ressourcennamen (ARN) der IAM-Rolle, Ihren Bucket-Namen und eine AWS-Region, wie im folgenden Beispiel dargestellt.

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

      Ihr COPY-Befehl sollte ähnlich wie im folgenden Beispiel aussehen.

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

      Um die Beispieldaten zu laden, ersetzen Sie <myBucket> und <aws-region> in den folgenden COPY-Befehlen mit Ihren Werten. Wenn Sie den Amazon-Redshift-Abfrage-Editor verwenden, führen Sie die folgenden Befehle einzeln aus.

      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>';