Tutorial: Massenladen aus einem lokalen Dateisystem mit COPY¶
In diesem Tutorial wird beschrieben, wie Sie Daten aus Dateien in Ihrem lokalen Dateisystem in eine Tabelle laden können.
Einführung¶
In diesem Tutorial erfahren Sie Folgendes:
Erstellen benannter Dateiformatobjekte, die Ihre Datendateien beschreiben.
Erstellen benannter Stagingobjekte.
Hochladen Ihrer Daten in den internen Stagingbereich.
Laden Ihrer Daten in Tabellen.
Beheben von Fehlern in Ihren Datendateien.
In diesem Tutorial erfahren Sie, wie Sie mit SnowSQL sowohl CSV- als auch JSON-Daten laden können.
Voraussetzungen¶
Das Tutorial setzt Folgendes voraus:
Sie haben ein Snowflake-Konto sowie einen Benutzer mit einer Rolle, die die erforderlichen Berechtigungen zum Erstellen von Datenbank-, Tabellen- und virtuellen Warehouse-Objekten erteilt.
Sie haben SnowSQL installiert.
Das Snowflake in 20 Minuten-Tutorial enthält die entsprechende Schritt-für-Schritt-Anleitung, um diese Anforderungen zu erfüllen.
Außerdem müssen Sie vor Beginn des Tutorials Folgendes tun:
Herunterladen der für diese Übung bereitgestellten Beispieldateien
Erstellen einer Datenbank, einiger Tabellen und eines virtuelles Warehouse für dieses Tutorial. Dies sind die grundlegenden Snowflake-Objekte, die für die meisten Snowflake-Aktivitäten benötigt werden.
Herunterladen der Beispieldatendateien¶
Für dieses Tutorial müssen Sie die von Snowflake bereitgestellten Beispieldatendateien herunterladen.
So laden Sie die Beispieldatendateien herunter und entpacken diese:
Klicken Sie mit der rechten Maustaste auf den Namen der Archivdatei
data-load-internal.zip
, und speichern Sie den Link/die Datei in Ihrem lokalen Dateisystem.Entpacken Sie die Beispieldateien. Das Tutorial setzt voraus, dass Sie die Dateien in die folgenden Verzeichnisse entpackt haben:
Linux/macOS:
/tmp/load
Windows:
C:\tempload
Diese Datendateien enthalten Beispielkontaktdaten in den folgenden Formaten:
CSV-Dateien, die eine Kopfzeile und fünf Datensätze enthalten. Das Feldtrennzeichen ist das Pipe-Zeichen (
|
). Das folgende Beispiel zeigt eine Kopfzeile und einen Datensatz:ID|lastname|firstname|company|email|workphone|cellphone|streetaddress|city|postalcode 6|Reed|Moses|Neque Corporation|eget.lacus@facilisis.com|1-449-871-0780|1-454-964-5318|Ap #225-4351 Dolor Ave|Titagarh|62631
Eine einzelne Datei im JSON-Format, die ein Array und drei Objekte enthält. Es folgt ein Beispiel für ein Array, das eines der Objekte enthält:
[ { "customer": { "address": "509 Kings Hwy, Comptche, Missouri, 4848", "phone": "+1 (999) 407-2274", "email": "blankenship.patrick@orbin.ca", "company": "ORBIN", "name": { "last": "Patrick", "first": "Blankenship" }, "_id": "5730864df388f1d653e37e6f" } }, ]
Erstellen von Datenbank, Tabellen und Warehouse¶
Führen Sie die folgenden Anweisungen aus, um eine Datenbank, zwei Tabellen (für CSV- und JSON-Daten) und ein virtuelles Warehouse zu erstellen, die für dieses Tutorial benötigt werden. Nachdem Sie das Tutorial abgeschlossen haben, können Sie diese Objekte wieder löschen.
-- Create a database. A database automatically includes a schema named 'public'. CREATE OR REPLACE DATABASE mydatabase; /* Create target tables for CSV and JSON data. The tables are temporary, meaning they persist only for the duration of the user session and are not visible to other users. */ CREATE OR REPLACE TEMPORARY TABLE mycsvtable ( id INTEGER, last_name STRING, first_name STRING, company STRING, email STRING, workphone STRING, cellphone STRING, streetaddress STRING, city STRING, postalcode STRING); CREATE OR REPLACE TEMPORARY TABLE myjsontable ( json_data VARIANT); -- Create a warehouse CREATE OR REPLACE WAREHOUSE mywarehouse WITH WAREHOUSE_SIZE='X-SMALL' AUTO_SUSPEND = 120 AUTO_RESUME = TRUE INITIALLY_SUSPENDED=TRUE;
Die Anweisung CREATE WAREHOUSE
erstellt das Warehouse, das zunächst angehalten ist. Die Anweisung legt auch AUTO_RESUME = true
fest, wodurch das Warehouse automatisch gestartet wird, wenn Sie SQL-Anweisungen ausführen, die Computeressourcen benötigen.
Dateiformatobjekte erstellen¶
Wenn Sie Datendateien aus einer Datei in eine Tabelle laden, müssen Sie das Format der Datei beschreiben und angeben, wie die Daten in der Datei interpretiert und verarbeitet werden sollen. Wenn Sie beispielsweise Daten aus einer CSV-Datei laden, die durch senkrechte Striche voneinander getrennt sind, müssen Sie angeben, dass die Datei das CSV-Format mit dem senkrechten Strich als Trennzeichen verwendet.
Diese Formatinformation geben Sie beim Ausführen des COPY INTO <Tabelle>-Befehls an. Sie können diese Informationen entweder als Option im Befehl angeben (z. B. TYPE = CSV
, FIELD_DELIMITER = '|'
usw.), oder Sie können ein Dateiformatobjekt angeben, das diese Formatinformationen enthält. Sie können ein benanntes Dateiformatobjekt mit dem Befehl CREATE FILE FORMAT erstellen.
In diesem Schritt erstellen Sie Dateiformatobjekte, die das Datenformat der CSV- und JSON-Beispieldaten beschreiben, die für dieses Tutorial bereitgestellt werden.
Erstellen eines Dateiformatobjekts für CSV-Daten¶
Führen Sie den Befehl CREATE FILE FORMAT aus, um das Dateiformat mycsvformat
zu erstellen.
CREATE OR REPLACE FILE FORMAT mycsvformat
TYPE = 'CSV'
FIELD_DELIMITER = '|'
SKIP_HEADER = 1;
Wobei:
TYPE = 'CSV'
gibt den Dateiformattyp der Quelldatei an. CSV ist der Standard-Dateiformattyp.FIELD_DELIMITER = '|'
gibt an, dass das Zeichen „| “ ein Feldtrennzeichen ist. Der Standardwert ist „,“.SKIP_HEADER = 1
zeigt an, dass die Quelldatei eine Kopfzeile enthält. Der COPY-Befehl überspringt diese Kopfzeilen beim Laden von Daten. Der Standardwert ist 0.
Erstellen eines Dateiformatobjekts für JSON-Daten¶
Führen Sie den Befehl CREATE FILE FORMAT aus, um das Dateiformat myjsonformat
zu erstellen.
CREATE OR REPLACE FILE FORMAT myjsonformat
TYPE = 'JSON'
STRIP_OUTER_ARRAY = TRUE;
Wobei:
TYPE = 'JSON'
gibt den Dateiformattyp der Quelldatei an.STRIP_OUTER_ARRAY = TRUE
weist den COPY-Befehl an, die Wurzelklammern ([]) beim Laden von Daten in die Tabelle wegzulassen.
Stagingobjekte erstellen¶
Ein Stagingbereich gibt an, wo Datendateien gespeichert (d. h. „bereitgestellt“) werden, damit die Daten in den Dateien in eine Tabelle geladen werden können. Ein benannter interner Stagingbereich ist ein Cloudspeicherort, der von Snowflake verwaltet wird.
Das Erstellen eines benannten Stagingbereichs ist nützlich, wenn Sie möchten, dass mehrere Benutzer oder Prozesse Dateien hochladen. Wenn Sie planen, Datendateien bereitzustellen, die nur von Ihnen selbst oder nur in eine einzelne Tabelle geladen werden, dann können Sie auch einfach entweder Ihren Benutzer-Stagingbereich oder den Tabellen-Stagingbereich verwenden. Weitere Informationen dazu finden Sie unter Massenladen aus einem lokalen Dateisystem.
In diesem Schritt erstellen Sie benannte Stagingbereiche für die verschiedenen Typen von Beispieldatendateien.
Erstellen eines Stagingbereichs für CSV-Datendateien¶
Führen Sie CREATE STAGE aus, um den Stagingbereich my_csv_stage
zu erstellen:
CREATE OR REPLACE STAGE my_csv_stage
FILE_FORMAT = mycsvformat;
Hinweis: Wenn Sie die FILE_FORMAT
-Option beim Erstellen des Stagingbereichs angeben, ist es nicht erforderlich, dieselbe FILE_FORMAT
-Option im COPY-Befehl anzugeben, der zum Laden von Daten aus dem Stagingbereich verwendet wird.
Erstellen eines Stagingbereichs für JSON-Datendateien¶
Führen Sie CREATE STAGE aus, um den Stagingbereich my_json_stage
zu erstellen:
CREATE OR REPLACE STAGE my_json_stage
FILE_FORMAT = myjsonformat;
Datendateien im Stagingbereich bereitstellen¶
Führen Sie PUT aus, um Beispieldatendateien aus Ihrem lokalen Dateisystem in die unter Tutorial: Massenladen aus einem lokalen Dateisystem mit COPY erstellten Stagingbereiche hochzuladen.
Staging der CSV-Beispieldatendateien¶
Führen Sie den PUT-Befehl aus, um die CSV-Dateien aus Ihrem lokalen Dateisystem hochzuladen.
Linux oder macOS
PUT file:///tmp/load/contacts*.csv @my_csv_stage AUTO_COMPRESS=TRUE;
Windows
PUT file://C:\temp\load\contacts*.csv @my_csv_stage AUTO_COMPRESS=TRUE;
Lassen Sie uns einen genaueren Blick auf den Befehl werfen:
file://<file-path>[/]contacts*.csv
gibt den vollständigen Verzeichnispfad und die Namen der Dateien auf Ihrem lokalen Computer an, die im Stagingbereich bereitgestellt werden sollen. Beachten Sie, dass Platzhalter für Dateisysteme erlaubt sind.@my_csv_stage
ist der Name des Stagingbereichs, in dem die Daten bereitgestellt werden sollen.auto_compress=true;
weist den Befehl an, die Daten im Stagingbereich zu komprimieren. Dies ist auch die Standardeinstellung.
Der Befehl liefert das folgende Ergebnis, das die Stagingdateien anzeigt:
+---------------+------------------+-------------+-------------+--------------------+--------------------+----------+---------+
| source | target | source_size | target_size | source_compression | target_compression | status | message |
|---------------+------------------+-------------+-------------+--------------------+--------------------+----------+---------|
| contacts1.csv | contacts1.csv.gz | 694 | 506 | NONE | GZIP | UPLOADED | |
| contacts2.csv | contacts2.csv.gz | 763 | 565 | NONE | GZIP | UPLOADED | |
| contacts3.csv | contacts3.csv.gz | 771 | 567 | NONE | GZIP | UPLOADED | |
| contacts4.csv | contacts4.csv.gz | 750 | 561 | NONE | GZIP | UPLOADED | |
| contacts5.csv | contacts5.csv.gz | 887 | 621 | NONE | GZIP | UPLOADED | |
+---------------+------------------+-------------+-------------+--------------------+--------------------+----------+---------+
Staging der JSON-Beispieldatendateien¶
Führen Sie den PUT-Befehl aus, um die JSON-Dateien aus Ihrem lokalen Dateisystem in den benannten Stagingbereich hochzuladen.
Linux oder macOS
PUT file:///tmp/load/contacts.json @my_json_stage AUTO_COMPRESS=TRUE;
Windows
PUT file://C:\temp\load\contacts.json @my_json_stage AUTO_COMPRESS=TRUE;
Der Befehl liefert das folgende Ergebnis, das die Stagingdateien anzeigt:
+---------------+------------------+-------------+-------------+--------------------+--------------------+----------+---------+
| source | target | source_size | target_size | source_compression | target_compression | status | message |
|---------------+------------------+-------------+-------------+--------------------+--------------------+----------+---------|
| contacts.json | contacts.json.gz | 965 | 446 | NONE | GZIP | UPLOADED | |
+---------------+------------------+-------------+-------------+--------------------+--------------------+----------+---------+
Liste der Stagingdateien (optional)¶
Sie können die Stagingdateien mit dem Befehl LIST auflisten.
CSV¶
LIST @my_csv_stage;
Snowflake gibt eine Liste Ihrer bereitgestellten Dateien zurück.
JSON¶
LIST @my_json_stage;
Snowflake gibt eine Liste Ihrer bereitgestellten Dateien zurück.
Daten in die Zieltabellen kopieren¶
Führen Sie COPY INTO <Tabelle> aus, um die im Stagingbereich bereitgestellten Daten in die Zieltabellen zu laden.
CSV¶
So laden Sie die Daten aus den CSV-Beispieldateien:
Laden Sie zunächst die Daten aus einer der Dateien (
contacts1.csv.gz
). Führen Sie den folgenden Befehl aus:COPY INTO mycsvtable FROM @my_csv_stage/contacts1.csv.gz FILE_FORMAT = (FORMAT_NAME = mycsvformat) ON_ERROR = 'skip_file';
Wobei:
Die
FROM
-Klausel gibt den Speicherort der Staging-Datendatei an (Stagingbereichsname gefolgt vom Dateinamen).Die
ON_ERROR
-Klausel gibt an, was zu tun ist, wenn der COPY-Befehl Fehler in den Dateien feststellt. Standardmäßig stoppt der Befehl das Laden von Daten beim ersten Auftreten eines Fehlers. Wir haben den Befehl jedoch so angepasst, dass jede Datei mit einem Fehler übersprungen und mit dem Laden der nächsten Datei fortgefahren wird. Beachten Sie, dass dies nur zur Veranschaulichung dient. Keine der Dateien in diesem Tutorial enthält Fehler.
Der COPY-Befehl gibt als Ergebnis die Namen der kopierten Dateien und zugehörige Informationen zurück:
+-----------------------------+--------+-------------+-------------+-------------+-------------+-------------+------------------+-----------------------+-------------------------+ | file | status | rows_parsed | rows_loaded | error_limit | errors_seen | first_error | first_error_line | first_error_character | first_error_column_name | |-----------------------------+--------+-------------+-------------+-------------+-------------+-------------+------------------+-----------------------+-------------------------| | mycsvtable/contacts1.csv.gz | LOADED | 5 | 5 | 1 | 0 | NULL | NULL | NULL | NULL | +-----------------------------+--------+-------------+-------------+-------------+-------------+-------------+------------------+-----------------------+-------------------------+
Laden Sie den Rest der Stagingdateien in die Tabelle
mycsvtable
.Im folgenden Beispiel wird die Mustererkennung verwendet, um Daten aus allen Dateien, die mit dem regulären Ausdruck
.*contacts[1-5].csv.gz
übereinstimmen, in die Tabellemycsvtable
zu laden.COPY INTO mycsvtable FROM @my_csv_stage FILE_FORMAT = (FORMAT_NAME = mycsvformat) PATTERN='.*contacts[1-5].csv.gz' ON_ERROR = 'skip_file';
Dabei gibt die
PATTERN
-Klausel an, dass der Befehl Daten aus Dateien mit Namen laden soll, die mit dem regulären Ausdruck(.*employees0[1-5].csv.gz)
übereinstimmen.Der COPY-Befehl gibt als Ergebnis die Namen der kopierten Dateien und zugehörige Informationen zurück:
+-----------------------------+-------------+-------------+-------------+-------------+-------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------+------------------+-----------------------+-------------------------+ | file | status | rows_parsed | rows_loaded | error_limit | errors_seen | first_error | first_error_line | first_error_character | first_error_column_name | |-----------------------------+-------------+-------------+-------------+-------------+-------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------+------------------+-----------------------+-------------------------| | mycsvtable/contacts2.csv.gz | LOADED | 5 | 5 | 1 | 0 | NULL | NULL | NULL | NULL | | mycsvtable/contacts3.csv.gz | LOAD_FAILED | 5 | 0 | 1 | 2 | Number of columns in file (11) does not match that of the corresponding table (10), use file format option error_on_column_count_mismatch=false to ignore this error | 3 | 1 | "MYCSVTABLE"[11] | | mycsvtable/contacts4.csv.gz | LOADED | 5 | 5 | 1 | 0 | NULL | NULL | NULL | NULL | | mycsvtable/contacts5.csv.gz | LOADED | 6 | 6 | 1 | 0 | NULL | NULL | NULL | NULL | +-----------------------------+-------------+-------------+-------------+-------------+-------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------+------------------+-----------------------+-------------------------+
Das Ergebnis liefert die folgenden Informationen:
Die Daten in
contacts1.csv.gz
werden ignoriert, da Sie die Daten bereits erfolgreich geladen haben.Die Daten folgender Dateien wurden erfolgreich geladen:
contacts2.csv.gz
,contacts4.csv.gz
undcontacts5.csv.gz
.Die Daten in
contacts3.csv.gz
wurden aufgrund von 2 Datenfehlern übersprungen. Der nächste Schritt in diesem Tutorial befasst sich mit der Validierung und Behebung der Fehler.
JSON¶
Laden Sie die Staging-Datendatei contacts.json.gz
in die Tabelle myjsontable
.
COPY INTO myjsontable
FROM @my_json_stage/contacts.json.gz
FILE_FORMAT = (FORMAT_NAME = myjsonformat)
ON_ERROR = 'skip_file';
Der COPY-Befehl gibt als Ergebnis die Namen der kopierten Dateien und zugehörige Informationen zurück:
+------------------------------+--------+-------------+-------------+-------------+-------------+-------------+------------------+-----------------------+-------------------------+
| file | status | rows_parsed | rows_loaded | error_limit | errors_seen | first_error | first_error_line | first_error_character | first_error_column_name |
|------------------------------+--------+-------------+-------------+-------------+-------------+-------------+------------------+-----------------------+-------------------------|
| myjsontable/contacts.json.gz | LOADED | 3 | 3 | 1 | 0 | NULL | NULL | NULL | NULL |
+------------------------------+--------+-------------+-------------+-------------+-------------+-------------+------------------+-----------------------+-------------------------+
Datenladefehler beheben¶
Im vorangegangenen Schritt hat der COPY INTO-Befehl einen ersten Fehler festgestellt und das Laden einer der Dateien übersprungen. Sie müssen alle Fehler finden und beheben. In diesem Schritt verwenden Sie die Funktion VALIDATE, um die vorherige Ausführung des COPY INTO-Befehls zu überprüfen und alle Fehler zurückzugeben.
Beispieldatendateien validieren und alle Fehler abrufen¶
Sie benötigen zunächst die Abfrage-ID, die mit dem zuvor ausgeführten COPY INTO-Befehl verbunden ist. Rufen Sie dann die Funktion VALIDATE
auf, und geben Sie die Abfrage-ID an.
Rufen Sie die Abfrage-ID ab.
Melden Sie sich bei Snowsight an.
Stellen Sie sicher, dass die Rolle in Snowsight mit der Rolle übereinstimmt, die Sie in SnowSQL zum Ausführen der SQL-Anweisungen dieses Tutorials verwenden.
Wählen Sie Monitoring » Query History aus.
Wählen Sie die Zeile für den spezifischen COPY INTO-Befehl aus, um den Abfrageinformationsbereich zu öffnen.
Kopieren Sie den Query ID-Wert.
Überprüfen Sie die Ausführung des COPY INTO-Befehls, der mit dieser Abfrage-ID verbunden ist, und speichern Sie die Fehler in einer neuen Tabelle namens
save_copy_errors
.Führen Sie den folgenden Befehl in SnowSQL aus. Ersetzen Sie
query_id
durch den Wert Query ID.CREATE OR REPLACE TABLE save_copy_errors AS SELECT * FROM TABLE(VALIDATE(mycsvtable, JOB_ID=>'<query_id>'));
Fragen Sie die Tabelle
save_copy_errors
ab.SELECT * FROM SAVE_COPY_ERRORS;
Die Abfrage gibt die folgenden Ergebnisse zurück:
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------+-------------------------------------+------+-----------+-------------+----------+--------+-----------+-------------------------------+------------+----------------+-----------------------------------------------------------------------------------------------------------------------------------------------------+ | ERROR | FILE | LINE | CHARACTER | BYTE_OFFSET | CATEGORY | CODE | SQL_STATE | COLUMN_NAME | ROW_NUMBER | ROW_START_LINE | REJECTED_RECORD | |----------------------------------------------------------------------------------------------------------------------------------------------------------------------+-------------------------------------+------+-----------+-------------+----------+--------+-----------+-------------------------------+------------+----------------+-----------------------------------------------------------------------------------------------------------------------------------------------------| | Number of columns in file (11) does not match that of the corresponding table (10), use file format option error_on_column_count_mismatch=false to ignore this error | mycsvtable/contacts3.csv.gz | 3 | 1 | 234 | parsing | 100080 | 22000 | "MYCSVTABLE"[11] | 1 | 2 | 11|Ishmael|Burnett|Dolor Elit Pellentesque Ltd|vitae.erat@necmollisvitae.ca|1-872|600-7301|1-513-592-6779|P.O. Box 975, 553 Odio, Road|Hulste|63345 | | Field delimiter '|' found while expecting record delimiter '\n' | mycsvtable/contacts3.csv.gz | 5 | 125 | 625 | parsing | 100016 | 22000 | "MYCSVTABLE"["POSTALCODE":10] | 4 | 5 | 14|Sophia|Christian|Turpis Ltd|lectus.pede@non.ca|1-962-503-3253|1-157-|850-3602|P.O. Box 824, 7971 Sagittis Rd.|Chattanooga|56188 | +----------------------------------------------------------------------------------------------------------------------------------------------------------------------+-------------------------------------+------+-----------+-------------+----------+--------+-----------+-------------------------------+------------+----------------+-----------------------------------------------------------------------------------------------------------------------------------------------------+
Das Ergebnis zeigt zwei Datenfehler in mycsvtable/contacts3.csv.gz
an:
Number of columns in file (11) does not match that of the corresponding table (10)
In Zeile 1 wurde ein Bindestrich versehentlich durch einen senkrechten Strich (
|
), das Trennzeichen der Datendatei, ersetzt, wodurch eine zusätzliche Spalte im Datensatz erstellt wurde.Field delimiter '|' found while expecting record delimiter 'n'
In Zeile 5 wurde nach einem Bindestrich ein zusätzlicher senkrechter Strich (
|
) eingefügt, was zum Unterbrechen des Datensatzes führte.
Fehler beheben und Datendateien erneut laden¶
Beheben Sie die Fehler in den Datensätze manuell in
contacts3.csv
in Ihrer lokalen Umgebung.Verwenden Sie den Befehl PUT, um die geänderte Datendatei in den Stagingbereich hochzuladen. Die geänderte Datei überschreibt die bestehende Stagingdatei.
Linux oder macOS:
PUT file:///tmp/load/contacts3.csv @my_csv_stage AUTO_COMPRESS=TRUE OVERWRITE=TRUE;
Windows:
PUT file://C:\temp\load\contacts3.csv @my_csv_stage AUTO_COMPRESS=TRUE OVERWRITE=TRUE;
Kopieren Sie die Daten aus den Stagingdateien in die Tabellen.
COPY INTO mycsvtable FROM @my_csv_stage/contacts3.csv.gz FILE_FORMAT = (FORMAT_NAME = mycsvformat) ON_ERROR = 'skip_file';
Snowflake liefert die folgenden Ergebnisse, die anzeigen, dass die Daten in contacts3.csv.gz
erfolgreich geladen wurden.
+-----------------------------+--------+-------------+-------------+-------------+-------------+-------------+------------------+-----------------------+-------------------------+ | file | status | rows_parsed | rows_loaded | error_limit | errors_seen | first_error | first_error_line | first_error_character | first_error_column_name | |-----------------------------+--------+-------------+-------------+-------------+-------------+-------------+------------------+-----------------------+-------------------------| | mycsvtable/contacts3.csv.gz | LOADED | 5 | 5 | 1 | 0 | NULL | NULL | NULL | NULL | +-----------------------------+--------+-------------+-------------+-------------+-------------+-------------+------------------+-----------------------+-------------------------+
Überprüfen der geladenen Daten¶
Führen Sie eine SELECT-Abfrage aus, um sicherzustellen, dass die Daten erfolgreich geladen wurden.
CSV¶
SELECT * FROM mycsvtable;
Die Abfrage gibt die folgenden Ergebnisse zurück:
+----+-----------+------------+----------------------------------+----------------------------------------+----------------+----------------+---------------------------------+------------------+------------+ | ID | LAST_NAME | FIRST_NAME | COMPANY | EMAIL | WORKPHONE | CELLPHONE | STREETADDRESS | CITY | POSTALCODE | |----+-----------+------------+----------------------------------+----------------------------------------+----------------+----------------+---------------------------------+------------------+------------| | 6 | Reed | Moses | Neque Corporation | eget.lacus@facilisis.com | 1-449-871-0780 | 1-454-964-5318 | Ap #225-4351 Dolor Ave | Titagarh | 62631 | | 7 | Audrey | Franks | Arcu Eu Limited | eu.dui@aceleifendvitae.org | 1-527-945-8935 | 1-263-127-1173 | Ap #786-9241 Mauris Road | Bergen | 81958 | | 8 | Jakeem | Erickson | A Ltd | Pellentesque.habitant@liberoProinmi.ca | 1-381-591-9386 | 1-379-391-9490 | 319-1703 Dis Rd. | Pangnirtung | 62399 | | 9 | Xaviera | Brennan | Bibendum Ullamcorper Limited | facilisi.Sed.neque@dictum.edu | 1-260-757-1919 | 1-211-651-0925 | P.O. Box 146, 8385 Vel Road | Béziers | 13082 | | 10 | Francis | Ortega | Vitae Velit Egestas Associates | egestas.rhoncus.Proin@faucibus.com | 1-257-584-6487 | 1-211-870-2111 | 733-7191 Neque Rd. | Chatillon | 33081 | | 16 | Aretha | Sykes | Lobortis Tellus Justo Foundation | eget@Naminterdumenim.net | 1-670-849-1866 | 1-283-783-3710 | Ap #979-2481 Dui. Av. | Thurso | 66851 | | 17 | Akeem | Casey | Pharetra Quisque Ac Institute | dictum.eu@magna.edu | 1-277-657-0361 | 1-623-630-8848 | Ap #363-6074 Ullamcorper, Rd. | Idar-Oberstei | 30848 | | 18 | Keelie | Mendez | Purus In Foundation | Nulla.eu.neque@Aeneanegetmetus.co.uk | 1-330-370-8231 | 1-301-568-0413 | 3511 Tincidunt Street | Lanklaar | 73942 | | 19 | Lane | Bishop | Libero At PC | non@dapibusligula.ca | 1-340-862-4623 | 1-513-820-9039 | 7459 Pede. Street | Linkebeek | 89252 | | 20 | Michelle | Dickson | Ut Limited | Duis.dignissim.tempor@cursuset.org | 1-202-490-0151 | 1-129-553-7398 | 6752 Eros. St. | Stornaway | 61290 | | 20 | Michelle | Dickson | Ut Limited | Duis.dignissim.tempor@cursuset.org | 1-202-490-0151 | 1-129-553-7398 | 6752 Eros. St. | Stornaway | 61290 | | 21 | Lance | Harper | Rutrum Lorem Limited | Sed.neque@risus.com | 1-685-778-6726 | 1-494-188-6168 | 663-7682 Et St. | Gisborne | 73449 | | 22 | Keely | Pace | Eleifend Limited | ante.bibendum.ullamcorper@necenim.edu | 1-312-381-5244 | 1-432-225-9226 | P.O. Box 506, 5233 Aliquam Av. | Woodlands County | 61213 | | 23 | Sage | Leblanc | Egestas A Consulting | dapibus@elementum.org | 1-630-981-0327 | 1-301-287-0495 | 4463 Lorem Road | Woodlands County | 33951 | | 24 | Marny | Holt | Urna Nec Luctus Associates | ornare@vitaeorci.ca | 1-522-364-3947 | 1-460-971-8360 | P.O. Box 311, 4839 Nulla Av. | Port Coquitlam | 36733 | | 25 | Holly | Park | Mauris PC | Vestibulum.ante@Maecenasliberoest.org | 1-370-197-9316 | 1-411-413-4602 | P.O. Box 732, 8967 Eu Avenue | Provost | 45507 | | 1 | Imani | Davidson | At Ltd | nec@sem.net | 1-243-889-8106 | 1-730-771-0412 | 369-6531 Molestie St. | Russell | 74398 | | 2 | Kelsie | Abbott | Neque Sed Institute | lacus@pede.net | 1-467-506-9933 | 1-441-508-7753 | P.O. Box 548, 1930 Pede. Road | Campbellton | 27022 | | 3 | Hilel | Durham | Pede Incorporated | eu@Craspellentesque.net | 1-752-108-4210 | 1-391-449-8733 | Ap #180-2360 Nisl. Street | Etalle | 84025 | | 4 | Graiden | Molina | Sapien Institute | sit@fermentum.net | 1-130-156-6666 | 1-269-605-7776 | 8890 A, Rd. | Dundee | 70504 | | 5 | Karyn | Howard | Pede Ac Industries | sed.hendrerit@ornaretortorat.edu | 1-109-166-5492 | 1-506-782-5089 | P.O. Box 902, 5398 Et, St. | Saint-Hilarion | 26232 | | 11 | Ishmael | Burnett | Dolor Elit Pellentesque Ltd | vitae.erat@necmollisvitae.ca | 1-872-600-7301 | 1-513-592-6779 | P.O. Box 975, 553 Odio, Road | Hulste | 63345 | | 12 | Ian | Fields | Nulla Magna Malesuada PC | rutrum.non@condimentumDonec.co.uk | 1-138-621-8354 | 1-369-126-7068 | P.O. Box 994, 7053 Quisque Ave | Ostra Vetere | 90433 | | 13 | Xanthus | Acosta | Tortor Company | Nunc.lectus@a.org | 1-834-909-8838 | 1-693-411-2633 | 282-7994 Nunc Av. | Belcarra | 28890 | | 14 | Sophia | Christian | Turpis Ltd | lectus.pede@non.ca | 1-962-503-3253 | 1-157-850-3602 | P.O. Box 824, 7971 Sagittis Rd. | Chattanooga | 56188 | | 15 | Dorothy | Watson | A Sollicitudin Orci Company | diam.dictum@fermentum.co.uk | 1-158-596-8622 | 1-402-884-3438 | 3348 Nec Street | Qu�bec City | 63320 | +----+-----------+------------+----------------------------------+----------------------------------------+----------------+----------------+---------------------------------+------------------+------------+
JSON¶
SELECT * FROM myjsontable;
Die Abfrage gibt die folgenden Ergebnisse zurück:
+-----------------------------------------------------------------+ | JSON_DATA | |-----------------------------------------------------------------| | { | | "customer": { | | "_id": "5730864df388f1d653e37e6f", | | "address": "509 Kings Hwy, Comptche, Missouri, 4848", | | "company": "ORBIN", | | "email": "blankenship.patrick@orbin.ca", | | "name": { | | "first": "Blankenship", | | "last": "Patrick" | | }, | | "phone": "+1 (999) 407-2274" | | } | | } | | { | | "customer": { | | "_id": "5730864d4d8523c8baa8baf6", | | "address": "290 Lefferts Avenue, Malott, Delaware, 1575", | | "company": "SNIPS", | | "email": "anna.glass@snips.name", | | "name": { | | "first": "Anna", | | "last": "Glass" | | }, | | "phone": "+1 (958) 411-2876" | | } | | } | | { | | "customer": { | | "_id": "5730864e375e08523150fc04", | | "address": "756 Randolph Street, Omar, Rhode Island, 3310", | | "company": "ESCHOIR", | | "email": "sparks.ramos@eschoir.co.uk", | | "name": { | | "first": "Sparks", | | "last": "Ramos" | | }, | | "phone": "+1 (962) 436-2519" | | } | | } | +-----------------------------------------------------------------+
Erfolgreich kopierte Datendateien entfernen¶
Nachdem Sie sich vergewissert haben, dass Sie die Daten erfolgreich aus Ihrem Stagingbereich in die Tabellen kopiert haben, können Sie die Datendateien mit dem Befehl REMOVE aus dem internen Stagingbereich entfernen, um Datenspeicher zu sparen.
REMOVE @my_csv_stage PATTERN='.*.csv.gz';
Snowflake gibt die folgenden Ergebnisse zurück:
+-------------------------------+---------+ | name | result | |-------------------------------+---------| | my_csv_stage/contacts1.csv.gz | removed | | my_csv_stage/contacts4.csv.gz | removed | | my_csv_stage/contacts2.csv.gz | removed | | my_csv_stage/contacts3.csv.gz | removed | | my_csv_stage/contacts5.csv.gz | removed | +-------------------------------+---------+REMOVE @my_json_stage PATTERN='.*.json.gz';
Snowflake gibt die folgenden Ergebnisse zurück:
+--------------------------------+---------+ | name | result | |--------------------------------+---------| | my_json_stage/contacts.json.gz | removed | +--------------------------------+---------+
Bereinigen¶
Herzlichen Glückwunsch, Sie haben das Tutorial erfolgreich abgeschlossen.
Tutorialdaten bereinigen (optional)¶
Führen Sie die folgenden DROP <Objekt>-Befehle aus, um Ihr System in den Zustand zu versetzen, bevor Sie das Tutorial begonnen haben:
DROP DATABASE IF EXISTS mydatabase; DROP WAREHOUSE IF EXISTS mywarehouse;
Wenn Sie die Datenbank löschen, werden automatisch alle untergeordneten Datenbankobjekte wie Tabellen entfernt.