Schritt 4: 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 |
+------------------------------+--------+-------------+-------------+-------------+-------------+-------------+------------------+-----------------------+-------------------------+
Nächstes Thema: Schritt 5: Datenladefehler beheben