SnowConvert AI - Vertica - CREATE TABLE¶
Description¶
Crée une table dans le schéma logique. (Langage de référence Vertica SQL : Create Table).
Avertissement
Cette syntaxe est partiellement prise en charge dans Snowflake. Traduction en attente pour ces clauses :
DISK_QUOTA quota
SET USING expression
ENCODING encoding-type
ACCESSRANK integer
Grammar Syntax¶
CREATE TABLE [ IF NOT EXISTS ] [[database.]schema.]table
( column-definition[,...] [, table-constraint [,...]] )
[ ORDER BY column[,...] ]
[ segmentation-spec ]
[ KSAFE [safety] ]
[ partition-clause]
[ {INCLUDE | EXCLUDE} [SCHEMA] PRIVILEGES ]
[ DISK_QUOTA quota ]
<column-definition> ::=
column-name data-type
[ column-constraint ][...]
[ ENCODING encoding-type ]
[ ACCESSRANK integer ]
<column-constraint> ::=
[ { AUTO_INCREMENT | IDENTITY } [ (args) ] ]
[ CONSTRAINT constraint-name ] {
[ CHECK (expression) [ ENABLED | DISABLED ] ]
[ [ DEFAULT expression ] [ SET USING expression } | DEFAULT USING expression ]
[ NULL | NOT NULL ]
[ { PRIMARY KEY [ ENABLED | DISABLED ] REFERENCES table [( column )] } ]
[ UNIQUE [ ENABLED | DISABLED ] ]
}
<table-constraint>::=
[ CONSTRAINT constraint-name ]
{
... PRIMARY KEY (column[,... ]) [ ENABLED | DISABLED ]
... | FOREIGN KEY (column[,... ] ) REFERENCES table [ (column[,...]) ]
... | UNIQUE (column[,...]) [ ENABLED | DISABLED ]
... | CHECK (expression) [ ENABLED | DISABLED ]
}
Tables Options¶
Order By¶
Dans Vertica, cette clause ORDER BY spécifie comment les données sont physiquement triées dans une super projection, une structure de stockage optimisée pour une table. Cet ordre physique explicite lors de la création de la table n’est pas directement pris en charge dans Snowflake. Pour plus d’informations, veuillez vous référer à SSC-EWI-VT0002..
Échantillon source¶
Vertica¶
CREATE TABLE metrics
(
metric_id INT,
business_unit VARCHAR(100),
metric_category VARCHAR(50) NOT NULL,
measurement_date DATE NOT NULL
)
ORDER BY measurement_date, business_unit, metric_category;
Snowflake¶
CREATE TABLE metrics
(
metric_id INT,
business_unit VARCHAR(100),
metric_category VARCHAR(50) NOT NULL,
measurement_date DATE NOT NULL
)
!!!RESOLVE EWI!!! /*** SSC-EWI-VT0002 - ORDER BY TABLE OPTION IS NOT SUPPORTED IN SNOWFLAKE ***/!!!
ORDER BY measurement_date, business_unit, metric_category
COMMENT = '{ "origin": "sf_sc", "name": "snowconvert", "version": { "major": 0, "minor": 0, "patch": "0" }, "attributes": { "component": "vertica", "convertedOn": "06/17/2025", "domain": "no-domain-provided" }}';
Clauses Projections¶
Les projections de Vertica sont un mécanisme permettant de définir et de maintenir l’ordre de tri physique des données sur le disque, optimisant ainsi les performances des requêtes pour des modèles d’accès spécifiques. Snowflake, cependant, utilise une stratégie de stockage et d’optimisation fondamentalement différente. Les données dans Snowflake sont automatiquement réparties en micro-partitions immuables, qui sont ensuite organisées et gérées par le service Cloud.
Bien qu’un ordre inhérent puisse exister dans ces micro-partitions en raison de l’insertion ou de l’application de clés de clustering, l’optimiseur de requêtes de Snowflake et son architecture sous-jacente sont conçus pour élaguer efficacement ces micro-partitions lors de l’exécution de la requête, indépendamment d’un ordre de tri global pré-défini. Cette approche, combinée à la mise en cache automatique et à un format de stockage en colonnes, permet à Snowflake d’atteindre des performances élevées sans que les utilisateurs aient à définir et à gérer manuellement des structures de données physiques telles que les projections de Vertica, simplifiant ainsi la gestion des données et optimisant un plus large éventail de modèles de requêtes sans définitions physiques explicites de tri.
Pour ces raisons, les clauses suivantes ne sont pas nécessaires dans Snowflake et sont supprimées du code original :
[ segmentation-spec ]
[ KSAFE [safety] ]
[ partition-clause]
Clause Inherited Schema Privileges¶
INCLUDE SCHEMA PRIVILEGES est une fonctionnalité spécifique à Vertica qui régit la manière dont les privilèges sont hérités. En l’occurrence, ils peuvent être hérités au niveau du schéma. Snowflake ne possède pas d’équivalent direct pour cette clause dans sa syntaxe CREATE TABLE. Les privilèges dans Snowflake sont gérés explicitement par des instructions GRANT.
Avertissement
Cette syntaxe n’est pas prise en charge par Snowflake.
Échantillon source¶
Vertica¶
CREATE TABLE metrics
(
metric_id INT,
business_unit VARCHAR(100),
metric_category VARCHAR(50) NOT NULL,
measurement_date DATE NOT NULL
)
INCLUDE SCHEMA PRIVILEGES;
Snowflake¶
CREATE TABLE metrics
(
metric_id INT,
business_unit VARCHAR(100),
metric_category VARCHAR(50) NOT NULL,
measurement_date DATE NOT NULL
)
!!!RESOLVE EWI!!! /*** SSC-EWI-VT0001 - INHERITED PRIVILEGES CLAUSE IS NOT SUPPORTED IN SNOWFLAKE ***/!!!
INCLUDE SCHEMA PRIVILEGES
COMMENT = '{ "origin": "sf_sc", "name": "snowconvert", "version": { "major": 0, "minor": 0, "patch": "0" }, "attributes": { "component": "vertica", "convertedOn": "06/17/2025", "domain": "no-domain-provided" }}';
Contraintes¶
IDENTITY - AUTO_INCREMENT¶
Crée une colonne de table dont les valeurs sont automatiquement générées et gérées par la base de données. Vous ne pouvez pas modifier ou charger des valeurs dans cette colonne. Vous pouvez définir cette contrainte sur une seule colonne de la table.
Succès
Cette syntaxe est entièrement prise en charge par Snowflake.
Échantillon source¶
Vertica¶
CREATE TABLE customers (
id AUTO_INCREMENT(1, 2),
name VARCHAR(50)
);
CREATE TABLE customers2 (
id IDENTITY(1, 2),
name VARCHAR(50)
);
Snowflake¶
CREATE TABLE customers (
id INT AUTOINCREMENT(1, 2) ORDER,
name VARCHAR(50)
)
COMMENT = '{ "origin": "sf_sc", "name": "snowconvert", "version": { "major": 0, "minor": 0, "patch": "0" }, "attributes": { "component": "vertica", "convertedOn": "06/17/2025", "domain": "no-domain-provided" }}';
CREATE TABLE customers2 (
id INT IDENTITY(1, 2) ORDER,
name VARCHAR(50)
)
COMMENT = '{ "origin": "sf_sc", "name": "snowconvert", "version": { "major": 0, "minor": 0, "patch": "0" }, "attributes": { "component": "vertica", "convertedOn": "06/17/2025", "domain": "no-domain-provided" }}';
Contrainte CHECK¶
La clause CHECK dans Vertica nécessite de nouvelles lignes ou des lignes mises à jour pour satisfaire une expression booléenne. Snowflake ne possède pas d’équivalent à cette clause ; par conséquent, SnowConvert AI ajoutera un EWI. Celui-ci sera appliqué comme attribut CHECK ou contrainte de table dans le code converti.
Danger
Cette syntaxe n’est pas prise en charge par Snowflake.
Échantillon source¶
Vertica¶
CREATE TABLE table1 (
product_id INT PRIMARY KEY,
quantity INT CHECK (quantity >= 0)
);
Snowflake¶
CREATE TABLE table1 (
product_id INT PRIMARY KEY,
quantity INT
!!!RESOLVE EWI!!! /*** SSC-EWI-0035 - CHECK STATEMENT NOT SUPPORTED ***/!!! CHECK (quantity >= 0)
)
COMMENT = '{ "origin": "sf_sc", "name": "snowconvert", "version": { "major": 0, "minor": 0, "patch": "0" }, "attributes": { "component": "vertica", "convertedOn": "06/17/2025", "domain": "no-domain-provided" }}';
Contrainte DEFAULT¶
Avertissement
Cette syntaxe est partiellement prise en charge par Snowflake.
La clause DEFAULT de base de Vertica est entièrement prise en charge et se traduit directement dans Snowflake. Pour la clause DEFAULT USING de Vertica, cependant, la traduction est partielle. Snowflake appliquera correctement la valeur DEFAULT lorsque de nouvelles lignes seront insérées, mais la capacité d’actualisation différée de la portion USING ne possède pas d’équivalent direct, et certaines expressions peuvent ne pas être prises en charge par Snowflake. Par conséquent, un avertissement est ajouté pour mettre en évidence cette différence fonctionnelle.
Échantillon source¶
Vertica¶
CREATE TABLE table1 (
base_value INT,
status_code INT DEFAULT 0,
derived_value INT DEFAULT USING (base_value + 100)
);
Snowflake¶
CREATE TABLE table1 (
base_value INT,
status_code INT DEFAULT 0,
derived_value INT DEFAULT (base_value + 100) /*** SSC-FDM-VT0001 - EXPRESSION IN USING CONSTRAINT MIGHT NOT BE SUPPORTED IN SNOWFLAKE ***/
)
COMMENT = '{ "origin": "sf_sc", "name": "snowconvert", "version": { "major": 0, "minor": 0, "patch": "0" }, "attributes": { "component": "vertica", "convertedOn": "06/17/2025", "domain": "no-domain-provided" }}';
PRIMARY KEY - UNIQUE - FOREIGN KEY¶
SnowConvert AI conserve les définitions de contraintes ; cependant, dans Snowflake, ces propriétés sont fournies pour faciliter la migration à partir d’autres bases de données. Elles ne sont pas appliquées de force ni gérées par Snowflake. Cela signifie que les valeurs par défaut peuvent être modifiées pour ces propriétés, mais si vous modifiez les valeurs par défaut, Snowflake ne créera pas de contrainte.
Avertissement
Cette syntaxe est partiellement prise en charge par Snowflake.
Échantillon source¶
Vertica¶
CREATE OR REPLACE TABLE employees (
emp_id INTEGER,
first_name VARCHAR(50),
last_name VARCHAR(50),
CONSTRAINT pk_employees_enabled PRIMARY KEY (emp_id) ENABLED
);
Snowflake¶
CREATE OR REPLACE TABLE employees (
emp_id INTEGER,
first_name VARCHAR(50),
last_name VARCHAR(50),
CONSTRAINT pk_employees_enabled PRIMARY KEY (emp_id) ENABLE
)
COMMENT = '{ "origin": "sf_sc", "name": "snowconvert", "version": { "major": 0, "minor": 0, "patch": "0" }, "attributes": { "component": "vertica", "convertedOn": "06/17/2025", "domain": "no-domain-provided" }}';
CREATE TABLE AS¶
Description¶
Crée et charge une table à partir des résultats d’une requête. ([Langage de référence Vertica SQL : Create Table (https://docs.vertica.com/23.3.x/en/sql-reference/statements/create-statements/create-table/)).
Avertissement
Cette syntaxe est partiellement prise en charge dans Snowflake. Traduction en attente pour les clauses suivantes :
[ /*+ LABEL */ ]
[ AT epoch ]
[ ENCODED BY column-ref-list ]
[ ENCODING encoding-type ]
[ ACCESSRANK integer ]
[ GROUPED ( column-reference[,...] ) ]
Grammar Syntax¶
CREATE TABLE [ IF NOT EXISTS ] [[database.]schema.]table
[ ( column-name-list ) ]
[ {INCLUDE | EXCLUDE} [SCHEMA] PRIVILEGES ]
AS [ /*+ LABEL */ ] [ AT epoch ] query [ ENCODED BY column-ref-list ] [ segmentation-spec ]
<column-name-list> ::=
column-name-list
[ ENCODING encoding-type ]
[ ACCESSRANK integer ]
[ GROUPED ( column-reference[,...] ) ]
Tables Options¶
Clause Segmentation¶
Cette syntaxe n’est pas requise dans Snowflake et est supprimée du code original. Pour plus d’informations, veuillez vous référer à Clauses Projections.
Note
Cette syntaxe n’est pas requise dans Snowflake.
Clause Inherited Schema Privileges¶
INCLUDE SCHEMA PRIVILEGES est une fonctionnalité spécifique à Vertica qui régit la manière dont les privilèges sont hérités. En l’occurrence, ils peuvent être hérités au niveau du schéma. Snowflake ne possède pas d’équivalent direct pour cette clause dans sa syntaxe CREATE TABLE. Pour plus d’informations, veuillez vous référer à Clause Inherited Schema Privileges. .
Avertissement
Cette syntaxe n’est pas prise en charge par Snowflake.
EWIs connexes¶
SSC-EWI-VT0001 : La clause Inherited privileges n’est pas prise en charge dans Snowflake.
CREATE TABLE LIKE¶
Description¶
Crée la table en répliquant une table existante. (Langage de référence Vertica SQL : Create Table).
Avertissement
Cette syntaxe est partiellement prise en charge dans Snowflake. Traduction en attente pour la clause suivante :
DISK_QUOTA quota
Grammar Syntax¶
CREATE TABLE [ IF NOT EXISTS ] [[database.]schema.]table
LIKE [[database.]schema.]existing-table
[ {INCLUDING | EXCLUDING} PROJECTIONS ]
[ {INCLUDE | EXCLUDE} [SCHEMA] PRIVILEGES ]
[ DISK_QUOTA quota ]
Tables Options¶
Projections¶
Cette syntaxe n’est pas requise dans Snowflake et est supprimée du code original. Pour plus d’informations, veuillez vous référer à Clauses Projections.
Avertissement
Cette syntaxe n’est pas requise dans Snowflake.
Clause Inherited Schema Privileges¶
INCLUDE SCHEMA PRIVILEGES est une fonctionnalité spécifique à Vertica qui régit la manière dont les privilèges sont hérités. En l’occurrence, ils peuvent être hérités au niveau du schéma. Snowflake ne possède pas d’équivalent direct pour cette clause dans sa syntaxe CREATE TABLE. Pour plus d’informations, veuillez vous référer à Clause Inherited Schema Privileges. .
Avertissement
Cette syntaxe n’est pas prise en charge par Snowflake.
EWIs connexes¶
SSC-EWI-VT0001 : La clause Inherited privileges n’est pas prise en charge dans Snowflake.