SnowConvert AI - Hive - CREATE TABLE¶
Applies to
Hive SQL
Spark SQL
Databricks SQL
Description¶
Crée une nouvelle table dans la base de données actuelle. Vous définissez une liste de colonnes qui contiennent chacune des données d’un type distinct. Le propriétaire de la table est l’émetteur de la commande CREATE TABLE.
Pour plus d’informations, consultez la documentation CREATE TABLE.
Syntaxe grammaticale ¶
--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 ¶
Description¶
Garantit que la table n’est créée que si elle n’existe pas déjà, ce qui permet d’éviter les doublons et les erreurs dans votre script SQL.
Hint
Cette syntaxe est entièrement prise en charge par Snowflake.
S’applique à :¶
Hive
Spark
Databricks
Grammar Syntax¶
IF NOT EXISTS
Modèles d’échantillons de sources¶
Code d’entrée :¶
CREATE TABLE IF NOT EXISTS table1 (
col1 INTEGER
);
Code de sortie :¶
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¶
Description¶
Les partitions sont créées sur la table, en fonction des colonnes spécifiées.
Cette syntaxe n’est pas nécessaire dans Snowflake.
S’applique à :¶
Hive
Spark
Databricks
Grammar Syntax¶
PARTITIONED BY ( { partition_column [ column_type ] } [, ...] )
Modèles d’échantillons de sources¶
Code d’entrée :¶
CREATE TABLE orders (
order_id INT,
customer_id INT,
order_date DATE,
total_amount DECIMAL(10, 2),
order_status STRING
)
PARTITIONED BY (order_status);
Code de sortie :¶
CREATE TABLE orders (
order_id INT,
customer_id INT,
order_date DATE,
total_amount DECIMAL(10, 2),
order_status STRING
);
CLUSTERED BY¶
Description¶
Les partitions créées sur la table seront réparties dans des compartiments fixes en fonction de la colonne spécifiée pour le compartimentage.
Cette grammaire est partiellement prise en charge.
S’applique à :¶
Hive
Spark
Databricks
Grammar Syntax¶
CLUSTERED BY (column_name1 [ASC|DESC], ...)
[SORTED BY (sort_column1 [ASC|DESC], ...)]
INTO num_buckets BUCKETS
La clause
CLUSTERED BY, utilisée pour l’optimisation des performances, sera convertie enCLUSTER BYdans Snowflake. Les performances peuvent varier entre les deux architectures.La clause
SORTED BYpeut être supprimée pendant la migration, car Snowflake gère automatiquement le tri des données au sein de ses micro-partitions.La clause
INTO BUCKETS, un paramètre de partitionnement SparkSQL/Databricks spécifique, devrait être entièrement supprimé, car il n’est pas applicable dans Snowflake.
Modèles d’échantillons de sources¶
Code d’entrée :¶
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;
Code de sortie :¶
CREATE TABLE table_name ( column1 data_type, column2 data_type, ... ) USING format
CLUSTER BY (bucketing_column1);
ROW FORMAT¶
Description¶
Spécifie le format des lignes pour l’entrée et la sortie.
Cette grammaire n’est pas prise en charge dans Snowflake.
S’applique à :¶
Hive
Spark
Databricks
Grammar Syntax¶
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 ] } }
Modèles d’échantillons de sources¶
Code d’entrée :¶
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';
Code de sortie :¶
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¶
Description¶
Format de fichier pour le stockage des tables.
Cette grammaire n’est pas prise en charge dans Snowflake.
S’applique à :¶
Hive
Spark
Databricks