SnowConvert AI - Hive - CREATE TABLE

Applies to
  • Hive SQL

  • Spark SQL

  • Databricks SQL

Descrição

Cria uma nova tabela no banco de dados atual. Você define uma lista de colunas, cada uma contendo dados de um tipo distinto. O proprietário da tabela é o emissor do comando CREATE TABLE.

Para mais informações, consulte a documentação CREATE TABLE.

Sintaxe da gravação

--DATASOURCE TABLE
CREATE TABLE [ IF NOT EXISTS ] table_identifier
    [ ( col_name1 col_type1 [ COMMENT col_comment1 ], ... ) ]
    USING data_source
    [ OPTIONS ( key1=val1, key2=val2, ... ) ]
    [ PARTITIONED BY ( col_name1, col_name2, ... ) ]
    [ CLUSTERED BY ( col_name3, col_name4, ... ) 
        [ SORTED BY ( col_name [ ASC | DESC ], ... ) ] 
        INTO num_buckets BUCKETS ]
    [ LOCATION path ]
    [ COMMENT table_comment ]
    [ TBLPROPERTIES ( key1=val1, key2=val2, ... ) ]
    [ AS select_statement ]
    
--HIVE FORMAT TABLE
CREATE [ EXTERNAL ] TABLE [ IF NOT EXISTS ] table_identifier
    [ ( col_name1[:] col_type1 [ COMMENT col_comment1 ], ... ) ]
    [ COMMENT table_comment ]
    [ PARTITIONED BY ( col_name2[:] col_type2 [ COMMENT col_comment2 ], ... ) 
        | ( col_name1, col_name2, ... ) ]
    [ CLUSTERED BY ( col_name1, col_name2, ...) 
        [ SORTED BY ( col_name1 [ ASC | DESC ], col_name2 [ ASC | DESC ], ... ) ] 
        INTO num_buckets BUCKETS ]
    [ ROW FORMAT row_format ]
    [ STORED AS file_format ]
    [ LOCATION path ]
    [ TBLPROPERTIES ( key1=val1, key2=val2, ... ) ]
    [ AS select_statement ]
    
--LIKE TABLE
CREATE TABLE [IF NOT EXISTS] table_identifier LIKE source_table_identifier
    USING data_source
    [ ROW FORMAT row_format ]
    [ STORED AS file_format ]
    [ TBLPROPERTIES ( key1=val1, key2=val2, ... ) ]
    [ LOCATION path ]
Copy

IF NOT EXISTS

Descrição

Garante que a tabela seja criada somente se ainda não existir, evitando duplicação e erros no script SQL.

Dica

Essa sintaxe é totalmente compatível com o Snowflake.

Aplica-se a

  • Hive

  • Spark

  • Databricks

Sintaxe da gramática

IF NOT EXISTS
Copy

Amostra de padrões da origem

Código de entrada:

CREATE TABLE IF NOT EXISTS table1 (
    col1 INTEGER
);
Copy

Código de saída:

CREATE TABLE IF NOT EXISTS table1 (
    col1 INTEGER
)
COMMENT = '{ "origin": "sf_sc", "name": "snowconvert", "version": {  "major": 0,  "minor": 0,  "patch": "0" }, "attributes": {  "component": "sybase",  "convertedOn": "03/19/2024" }}';
Copy

PARTITION BY

Descrição

As partições são criadas na tabela, com base nas colunas especificadas.

Essa sintaxe não é necessária no Snowflake.

Aplica-se a

  • Hive

  • Spark

  • Databricks

Sintaxe da gramática

PARTITIONED BY ( { partition_column [ column_type ] } [, ...] )
Copy

Amostra de padrões da origem

Código de entrada:

CREATE TABLE orders (
    order_id INT,
    customer_id INT,
    order_date DATE,
    total_amount DECIMAL(10, 2),
    order_status STRING
)
PARTITIONED BY (order_status);
Copy

Código de saída:

CREATE TABLE orders (
    order_id INT,
    customer_id INT,
    order_date DATE,
    total_amount DECIMAL(10, 2),
    order_status STRING
);
Copy

CLUSTERED BY

Descrição

As partições criadas na tabela serão agrupadas em buckets fixos com base na coluna especificada para agrupamento em bucket.

Esta sintaxe é parcialmente suportada

Aplica-se a

  • Hive

  • Spark

  • Databricks

Sintaxe da gramática

CLUSTERED BY (column_name1 [ASC|DESC], ...)
[SORTED BY (sort_column1 [ASC|DESC], ...)]
INTO num_buckets BUCKETS
Copy
  • A cláusula CLUSTERED BY, usada para otimização de desempenho, será convertida para CLUSTER BY no Snowflake. O desempenho pode variar entre as duas arquiteturas.

  • A cláusula SORTED BY pode ser removida durante a migração, porque o Snowflake classifica automaticamente os dados dentro das micropartições.

  • A cláusula INTO BUCKETS, uma configuração de particionamento específica de SparkSQL/Databrick, deve ser totalmente eliminada, porque não é aplicável no Snowflake.

Amostra de padrões da origem

Código de entrada:

CREATE TABLE table_name ( 
column1 data_type, column2 data_type, ... ) USING format CLUSTERED BY (bucketing_column1) SORTED BY (sorting_column1 DESC, sorting_column2 ASC) INTO 10 BUCKETS;
Copy

Código de saída:

CREATE TABLE table_name ( column1 data_type, column2 data_type, ... ) USING format
CLUSTER BY (bucketing_column1);
Copy

ROW FORMAT

Descrição

Especifica o formato da linha para entrada e saída.

Esta sintaxe não é suportada no Snowflake

Aplica-se a

  • Hive

  • Spark

  • Databricks

Sintaxe da gramática

ROW FORMAT fow_format

row_format:
   { SERDE serde_class [ WITH SERDEPROPERTIES (serde_key = serde_val [, ...] ) ] |
     { DELIMITED [ FIELDS TERMINATED BY fields_terminated_char [ ESCAPED BY escaped_char ] ]
       [ COLLECTION ITEMS TERMINATED BY collection_items_terminated_char ]
       [ MAP KEYS TERMINATED BY map_key_terminated_char ]
       [ LINES TERMINATED BY row_terminated_char ]
       [ NULL DEFINED AS null_char ] } }
Copy

Amostra de padrões da origem

Código de entrada:

CREATE TABLE parquet_table ( id INT, data STRING )  STORED AS TEXTFILE LOCATION '/mnt/delimited/target' ROW FORMAT DELIMITED FIELDS TERMINATED BY ',' ESCAPED BY '\\' COLLECTION ITEMS TERMINATED BY ';' MAP KEYS TERMINATED BY ':' LINES TERMINATED BY '\n' NULL DEFINED AS 'NULL_VALUE';
Copy

Código de saída:

CREATE TABLE delimited_like_delta LIKE source_delta_table STORED AS TEXTFILE LOCATION '/mnt/delimited/target'
!!!RESOLVE EWI!!! /*** SSC-EWI-HV0002 - THE ROW FORMAT CLAUSE IS NOT SUPPORTED IN SNOWFLAKE ***/!!! ROW FORMAT DELIMITED FIELDS TERMINATED BY ',' ESCAPED BY '\\' COLLECTION ITEMS TERMINATED BY ';' MAP KEYS TERMINATED BY ':' LINES TERMINATED BY '\n' NULL DEFINED AS 'NULL_VALUE';
Copy

STORED AS

Descrição

Formato de arquivo para armazenamento de tabelas.

Esta sintaxe não é suportada no Snowflake

Aplica-se a

  • Hive

  • Spark

  • Databricks