Für das Laden von Dateien gibt es in Snowflake den COPY INTO Befehl. Der Befehl ist dazu gedacht – mit Hilfe eines File Formats – Daten aus der Datei in eine Tabelle zu kopieren. Aber auch ohne die Daten zu laden kann man einfache Selects auf Dateien ausführen.
Syntax eines einfachen Copy Into Befehls:
COPY INTO MyTable(Column01, Column02, Column03) FROM ( SELECT $1, $2, $3 FROM '@MyStage/folder01' ) FILE_FORMAT = CSVFILEFORMAT PATTERN= '.*\.csv$' ;
Die Syntax für die Verwendung in einem Select ist ähnlich, aber dann doch wenig intuitiv:
SELECT $1, $2, $3 FROM '@MyStage/folder01' ( --FILE_FORMAT => CSVFILEFORMAT, --falsch FILE_FORMAT => 'CSVFILEFORMAT', --richtig PATTERN => '.*\.csv )
Cheat-Sheet:
- Angaben zum File Format, Pattern etc stehen nun in Klammern nach dem FROM
- Die „=“ werden zu „=>“
- Die Zeilen müssen durch Kommas getrennt werden
- Das FileFormat muss nun in Hochkommas stehen.
Wer diesen letzten Punkt ignoriert erhält die verwirrende Fehlermeldung
SQL-Fehler [2003] [02000]: SQL compilation error: File format 'CSVDATEN' does not exist.