2014-02-19 12 views
5

Ich versuche, eine einfache Kette s3-Pipeline-Redshift zu laufen, aber ich habe völlig mit Eingabedatenformat stecken. Hier ist meine Datei:S3 zu Redshift Eingabedatenformat

1, Toyota Park, Bridgeview, IL
2, Columbus Crew Stadium, Columbus, OH
3, RFK-Stadion, Washington, DC
4, Communityballpark, Kansas City, KS
5, Gillette Stadium, Foxborough, MA
6, New York Giants Stadium, East Rutherford, NJ
7, BMO Field, Toronto, ON
8, The Home Depot Center in Carson, Kalifornien
9, Dicks Sporting Goods Park, Handelsstadt, CO
10, Pizza Hut Park, Frisco, TX

und hier ist die Tabelle Ich verwende:

create table venue_new(
    venueid smallint not null, 
    venuename varchar(100) not null, 
    venuecity varchar(30), 
    venuestate char(2), 
    venueseats integer not null default '1000'); 

Wenn ich | als Trennzeichen, bekomme ich Fehler 1214 - Trennzeichen nicht gefunden, wenn ich Komma benutze - gleiche Sache, wenn ich Datei in UTF-8 umwandelte, bekomme ich "ungültige Ziffer, Wert '.", Pos 0, Typ: Kurz ". Ich hatte keine Ideen mehr. Was für ein Fehler ist mit diesem Ding falsch? Kann mir bitte jemand das Beispiel der Eingabedatei geben oder sagen, was ich falsch mache? Danke im Voraus. PS Ich habe auch dieses Beispiel gefunden Dateien sind im Bucket awssampledb verfügbar, aber ich habe keine Ahnung, wie ich sie bekomme

Antwort

8

Basierend auf den Daten in der Datei Beispiel.Sie müssen daran denken, dass Sie 5 Felder in Ihrer Tabelle haben, und es gibt kein 5. Feld Alle Ihre Daten - aber es ist ein Nicht-Null-Feld. Ihr Copy-Befehl muss auf die 4 Spalten verweisen, die Sie am Anfang der Anweisung angeben.

copy venue_new(venueid, venuename, venuecity, venuestate) 
from 's3://mybucket/data/venue_noseats.txt' 
credentials 'aws_access_key_id=<access-key-id>;aws_secret_access_key=<secret-access-key>' 
delimiter ','; 

Ich fand den obigen Befehl (aus AWS Docs COPY examples funktionierte erfolgreich für mich, so dass ich mit dem Standard 1000 in der 'Venuesats'-Spalte.

+0

Dank einer Tonne haben Sie meinen Tag gerettet. Ich habe den letzten Parameter explizit definiert und er hat angefangen zu arbeiten. Was aber für die von Ihnen zur Verfügung gestellte Lösung betrifft, wie kann ich dasselbe in der Pipeline machen? – KorsaR