Ir al contenido

Detecta automáticamente el esquema de metadatos del archivo y recupera las definiciones de columnas.

INFER_SCHEMA(
LOCATION => '{ internalStage | externalStage }'
[ PATTERN => '<regex_pattern>']
)

Donde:

internalStage ::= @<internal_stage_name>[/<path>]
externalStage ::= @<external_stage_name>[/<path>]

Una cadena de patrón de expresión regular basada en PCRE2, entre comillas simples, que especifica los nombres de archivo que deben coincidir. Consulte más abajo para ver un ejemplo. Para la sintaxis de PCRE2, consulte http://www.pcre.org/current/doc/html/pcre2syntax.html.

Genere un archivo parquet en una etapa:

CREATE STAGE infer_parquet FILE_FORMAT = (TYPE = PARQUET);
COPY INTO @infer_parquet FROM (SELECT * FROM numbers(10)) FILE_FORMAT = (TYPE = PARQUET);
LIST @infer_parquet;
┌───────────────────────────────────────────────────────┬──────┬────────────────────────────────────┬───────────────────────────────┬─────────┐
│ name │ size │ md5 │ last_modified │ creator │
├───────────────────────────────────────────────────────┼──────┼────────────────────────────────────┼───────────────────────────────┼─────────┤
│ data_e0fd9cba-f45c-4c43-aa07-d6d87d134378_0_0.parquet │ 258 │ "7DCC9FFE04EA1F6882AED2CF9640D3D4" │ 2023-02-09 05:21:52.000 +0000 │ NULL │
└───────────────────────────────────────────────────────┴──────┴────────────────────────────────────┴───────────────────────────────┴─────────┘
SELECT * FROM INFER_SCHEMA(location => '@infer_parquet/data_e0fd9cba-f45c-4c43-aa07-d6d87d134378_0_0.parquet');
┌─────────────┬─────────────────┬──────────┬──────────┐
│ column_name │ type │ nullable │ order_id │
├─────────────┼─────────────────┼──────────┼──────────┤
│ number │ BIGINT UNSIGNED │ 0 │ 0 │
└─────────────┴─────────────────┴──────────┴──────────┘
SELECT * FROM infer_schema(location => '@infer_parquet/', pattern => '.*parquet');
┌─────────────┬─────────────────┬──────────┬──────────┐
│ column_name │ type │ nullable │ order_id │
├─────────────┼─────────────────┼──────────┼──────────┤
│ number │ BIGINT UNSIGNED │ 0 │ 0 │
└─────────────┴─────────────────┴──────────┴──────────┘

Creación de una tabla a partir de un archivo Parquet

Sección titulada «Creación de una tabla a partir de un archivo Parquet»

infer_schema solo puede mostrar el esquema de un archivo parquet y no puede crear una tabla a partir de él.

Para crear una tabla a partir de un archivo parquet:

CREATE TABLE mytable AS SELECT * FROM @infer_parquet/ (pattern=>'.*parquet') LIMIT 0;
DESC mytable;
┌────────┬─────────────────┬──────┬─────────┬───────┐
│ Field │ Type │ Null │ Default │ Extra │
├────────┼─────────────────┼──────┼─────────┼───────┤
│ number │ BIGINT UNSIGNED │ NO │ 0 │ │
└────────┴─────────────────┴──────┴─────────┴───────┘