CSV-Dateien von S3 in Snowflake laden

CSV-Dateien von S3 in Snowflake laden

  • Orchestrierung
6 Minuten Lesezeit Aktualisiert Oct 13, 2020

Auf einen Blick: Das Laden von CSV-Dateien von Amazon S3 auf Snowflake erfordert detaillierte Schritte zur Tabellenerstellung und Datenkopierung sowie Codeschnipsel zur Datenverarbeitung. Dieses Tutorial bietet praktische Anleitungen zur effizienten Verwaltung von CSV-Daten.

  • Schritt-für-Schritt-Anweisungen zum Laden von CSV-Dateien in Snowflake.
  • Codebeispiele zum Erstellen von Tabellen und zum Kopieren von Daten aus S3.

In diesen Tutorials zeigen wir, wie man eine CSV-Datei von Amazon S3 in eine Snowflake-Tabelle lädt.

Wir haben auch behandelt , wie man JSON-Dateien in Snowflake lädt.

Beispieldaten

Man braucht einige Daten, um dieses Beispiel durchzugehen. Laden Sie hier 1.000 Wetterdaten herunter. (Wir haben 20 Jahre Wetterdaten für Paphos, Zypern, von OpenWeather gekauft. Dies ist nur eine kleine Teilmenge von 1.000 Datensätzen, die in CSV-Format umgewandelt wurden.)

Lade diese Daten so auf Amazon S3 hoch:

    aws s3 cp paphosWeather.csv s3://gluebmcwalkerrowe/paphosWeather.csv

Tabelle in Snowflake erstellen

Leider liest Snowflake den Header-Datensatz nicht und erstellt die Tabelle nicht für Sie. (Vermutlich liegt das daran, dass sie es bevorzugen, wenn Sie die Spaltendatentypen, Zahlengenauigkeit und Größe definieren.)

    create table weather(
dt integer,
temp decimal(6,2),
temp_min decimal(6,2),
temp_max decimal(6,2),
pressure int,
humidity int,
speed decimal(6,2),
deg int,
main varchar(50),
description varchar(50))

Kopiere die Datendatei in den Snowflake-Bühnenbereich

Dann erstelle einen Snowflake-Bühnenbereich wie diesen.

Es spielt keine Rolle, welche Snowflake-Zugangsdaten Sie haben. Geben Sie Ihre Amazon AWS-Zugangsdaten ein. Tatsächlich gibt es keinen Ort, um Ihre Snowflake-Zugangsdaten nachzuschlagen, da sie mit Ihren Amazon IAM-Zugangsdaten identisch sind – selbst wenn Sie sie auf einer Snowflake-Instanz ausführen, also Snowflake nicht lokal auf Ihren EC2-Servern installiert haben.

    create or replace stage paphosweather
url='s3://gluebmcwalkerrowe/paphosWeather.csv'
credentials=(aws_key_id='xxxxxxx' aws_secret_key='xxxxxxx')

Kopiere jetzt die Daten in die oben erstellte Tabelle.

    copy into weather
  from 's3://gluebmcwalkerrowe/paphosWeather.csv' 
  credentials=(aws_key_id='xxxxxxx' aws_secret_key='xxxxxxxx')
  file_format = (type = csv field_delimiter = ',' skip_header = 1);

Konvertiere die Epochenzeit in lesbares Format

Die DT-Spalte ist die Epochenzeit, also die Anzahl der Sekunden seit dem 1. Januar 1970. Sie können sie in ein lesbares Format (z. B. 2000-01-01 01:00:00.000) so umwandeln.

    select to_timestamp(dt) from weather

Snowflake-Datums- und Zeitformate

Snowflake scheint einige Einschränkungen beim Import von Datums- und Zeitwerten zu haben. Die Daten, die ich hatte, enthielten sowohl die Epochenzeit () als auch die Zeit in diesem Format:

2020-09-12 23:00:00 +0000 UTC

das ich in dieses Format konvertierte, wobei +00,00 den Zeitzonen-Offset in hh:mm bedeutet:

2020-09-12 23:00:00+00:00

Dieses Format ist ebenfalls verfügbar, das die Zeitzone ganz entfernt:

2020-09-12 23:00:00

Da ich keinen dieser Werte laden konnte, habe ich die Epochenzeit genutzt. (Wenn du es zum Laufen bringst, schreibe uns auf blogs@bmc.com.)

2020-09-12 23:00:00+00:00 sollte mit dieser Formatierungsanweisung übereinstimmen, die Sie mit der Alter Session-Timestamp-Anweisung vor dem Laden der CSV-Datei festgelegt haben:

    alter session set TIMESTAMP_INPUT_FORMAT = 'yyyy-mm-dd HH24:MI:SS+TZH:TZM'

Aber Snowflake hat einen Fehler angezeigt, dass sie nicht übereinstimmen. Das ergibt keinen Sinn, da diese Aussage, die das testet, problemlos funktionierte:

    select to_timestamp('2000-01-01 00:00:00+00:00', 'yyyy-mm-dd HH24:MI:SS+TZH:TZM');

Als ich weiter recherchiert habe, habe ich in der Dokumentation gesehen, dass das Snowflake-Datetime-Format keine Millisekunden- oder Zeitzonenverschiebung unterstützt. Aber ich bekam trotzdem eine Fehlermeldung, als ich diesen Teil des Datums weggelassen habe. Das Zeitstempelformat hat auch nicht funktioniert. (Noch einmal: Schreib uns, wenn du das bei blogs@bmc.com zum Laufen bringst.)

Zusätzliche Ressourcen

Für weitere Tutorials wie dieses entdecken Sie diese Ressourcen:

Diese Beiträge sind meine eigenen und spiegeln nicht unbedingt die Position, Strategien oder Meinung von BMC wider.

Mehr aus Orchestrierung

Abonnieren Sie The Brief

Mit der Registrierung für dieses Angebot bestätigen Sie, dass Sie die Datenschutzrichtlinie von BMC gelesen und zugestimmt haben.

Danke

Sie haben The Brief abonniert
Das Briefing umfasst die Mainframe- und Enterprise-Orchestrierung – BMC AMI und Control-M – sowie die Analystenforschung, Kundeneinsätze und Events in beiden Bereichen.