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 ]
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
Amostra de padrões da origem¶
Código de entrada:¶
CREATE TABLE IF NOT EXISTS table1 (
col1 INTEGER
);
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" }}';
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 ] } [, ...] )
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);
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
);
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
A cláusula
CLUSTERED BY, usada para otimização de desempenho, será convertida paraCLUSTER BYno Snowflake. O desempenho pode variar entre as duas arquiteturas.A cláusula
SORTED BYpode 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;
Código de saída:¶
CREATE TABLE table_name ( column1 data_type, column2 data_type, ... ) USING format
CLUSTER BY (bucketing_column1);
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 ] } }
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';
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';
STORED AS¶
Descrição¶
Formato de arquivo para armazenamento de tabelas.
Esta sintaxe não é suportada no Snowflake
Aplica-se a¶
Hive
Spark
Databricks