Kategorien:

Tabellenfunktionen

VALIDATE

Validiert die Dateien, die bei einer früheren Ausführung des Befehls COPY INTO <Tabelle> geladen wurden, und gibt nicht nur den ersten Fehler, sondern alle Fehler zurück, die beim Laden aufgetreten sind.

Syntax

VALIDATE( [<namespace>.]<table_name> , JOB_ID => { '<query_id>' | _last } )

Argumente

[Namespace.]Tabellenname

Gibt den vollständig qualifizierten Namen der Tabelle an, die das Ladeziel war.

Namespace ist die Datenbank und/oder das Schema, in dem sich die Tabelle befindet, in Form von Datenbankname.Schemaname oder Schemaname. Es ist optional, ob in der Benutzersitzung aktuell eine Datenbank und ein Schema verwendet werden, andernfalls ist es erforderlich.

JOB_ID => Abfrage-ID | _last

Die ID für den zu validierenden Befehl COPY INTO <Tabelle>:

  • Die ID kann in der Query ID-Spalte der Seite History History tab der Snowflake-Weboberfläche abgerufen werden. Die angegebene Abfrage-ID muss für die angegebene Zieltabelle bestimmt gewesen sein.

  • Wenn _last anstelle von Abfrage-ID angegeben wird, überprüft die Funktion den letzten Ladevorgang, der während der aktuellen Sitzung ausgeführt wurde, unabhängig von der angegebenen Zieltabelle.

Nutzungshinweise

  • Diese Funktion unterstützt keine COPY INTO <Tabelle>-Anweisungen, die Daten während eines Ladevorgangs transformieren.

  • Die Validierung gibt keine Ergebnisse für COPY-Anweisungen zurück, in denen ON_ERROR = ABORT_STATEMENT (Standardwert) angegeben ist.

  • Die Validierung schlägt in folgenden Fällen fehl:

    • Der aktuelle Benutzer hat keinen Zugriff auf Tabellenname.

    • Der aktuelle Benutzer ist nicht der Benutzer, der Abfrage-ID ausgeführt hat, und verfügt nicht über Zugriffssteuerungsrechte für diesen Benutzer.

  • Wenn seit der Ausführung des Ladevorgangs dem von Abfrage-ID verwendeten Stagingbereich neue Dateien hinzugefügt wurden, werden die hinzugefügten Dateien während der Validierung ignoriert.

  • Wenn seit dem Ausführen des Ladevorgangs Dateien aus dem von Abfrage-ID verwendeten Stagingbereich entfernt wurden, werden die entfernten Dateien als fehlend gemeldet.

Beispiele

COPY INTO t1 FROM @%t1
  PATTERN='.*tw01.*'
  FILE_FORMAT=(NULL_IF=('') FIELD_OPTIONALLY_ENCLOSED_BY='"')
  ON_ERROR = SKIP_FILE;

COPY INTO t1;
FAILURE: Error parsing JSON: unterminated string
  File 'tables/530049/bad.json.gz', line 120
  Row 0 starts at line 1, column V
  If you would like to continue loading when an error is encountered, use other values such as 'SKIP_FILE' or 'CONTINUE' for the ON_ERROR option. For more information on loading options, please run 'info loading_data' in a SQL client.

Geben Sie Fehler für den zuletzt ausgeführten COPY-Befehl zurück:

SELECT * FROM TABLE(VALIDATE(t1, JOB_ID => '_last'));

-----------------------------------------------------------------+---------------------------+------+-----------+-------------+----------+--------+-----------+-------------+------------+----------------+
                              ERROR                              |           FILE            | LINE | CHARACTER | BYTE_OFFSET | CATEGORY |  CODE  | SQL_STATE | COLUMN_NAME | ROW_NUMBER | ROW_START_LINE |
-----------------------------------------------------------------+---------------------------+------+-----------+-------------+----------+--------+-----------+-------------+------------+----------------+
 Error parsing JSON: unterminated string                         | tables/530049/bad.json.gz | 120  | [NULL]    | 7504        | parsing  | 100069 | 22P02     | V           | 0          | 1              |
 Error parsing JSON: misplaced colon                             | tables/530049/bad.json.gz | 214  | 18        | 84465       | parsing  | 100069 | 22P02     | V           | 2          | 214            |
 Error parsing JSON: unknown keyword "tru"                       | tables/530049/bad.json.gz | 1467 | [NULL]    | 85337       | parsing  | 100069 | 22P02     | V           | 3          | 1445           |
 Error parsing JSON: unknown keyword "stat"                      | tables/530049/bad.json.gz | 1469 | 13        | 85353       | parsing  | 100069 | 22P02     | V           | 5          | 1469           |
 Error parsing JSON: unknown keyword "ok"                        | tables/530049/bad.json.gz | 1469 | 20        | 85360       | parsing  | 100069 | 22P02     | V           | 7          | 1469           |
 Error parsing JSON: invalid character outside of a string: '\\' | tables/530049/bad.json.gz | 1469 | 21        | 163414      | parsing  | 100069 | 22P02     | V           | 8          | 1469           |
 Error parsing JSON: misplaced }                                 | tables/530049/bad.json.gz | 1470 | 3         | 163418      | parsing  | 100069 | 22P02     | V           | 9          | 1469           |
-----------------------------------------------------------------+---------------------------+------+-----------+-------------+----------+--------+-----------+-------------+------------+----------------+

Geben Sie Fehler zurück, indem Sie eine Abfrage-ID angeben, die von der Weboberfläche abgerufen wird:

SELECT * FROM TABLE(VALIDATE(t1, JOB_ID=>'5415fa1e-59c9-4dda-b652-533de02fdcf1'));

Gleiche Abfrage wie oben, aber speichern Sie die Ergebnisse in einer Tabelle zur späteren Verwendung:

CREATE OR REPLACE TABLE save_copy_errors AS SELECT * FROM TABLE(VALIDATE(t1, JOB_ID=>'5415fa1e-59c9-4dda-b652-533de02fdcf1'));