SnowConvert AI Vertica – CREATE TABLE¶
Beschreibung¶
Erstellt eine Tabelle im logischen Schema. (Vertica SQL-Sprachreferenz – CREATE TABLE).
Warnung
Diese Syntax wird in Snowflake teilweise unterstützt. Übersetzung für diese Klauseln ausstehend:
DISK_QUOTA quota
SET USING expression
ENCODING encoding-type
ACCESSRANK integer
Grammatikalische 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 ]
}
Optionen für Tabellen¶
ORDER BY¶
In Vertica gibt diese ORDER BY-Klausel an, wie Daten innerhalb einer Superprojektion, einer optimierten Speicherstruktur für eine Tabelle, physisch sortiert werden. Diese explizite physische Reihenfolge bei der Tabellenerstellung wird in Snowflake nicht direkt unterstützt. Weitere Informationen dazu finden Sie unter SSC-EWI-VT0002..
Beispielquelle¶
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" }}';
Projektionsklauseln¶
Die Projektionen von Vertica sind ein Mechanismus, um die physische Sortierreihenfolge von Daten auf der Festplatte zu definieren und aufrechtzuerhalten und dadurch die Abfrageleistung für bestimmte Zugriffsmuster zu optimieren. Snowflake hingegen verwendet eine grundlegende andere Speicher- und Optimierungsstrategie. Daten in Snowflake werden automatisch in unveränderliche Mikropartitionen unterteilt, die dann vom Clouddienst organisiert und verwaltet werden.
Auch wenn innerhalb dieser Mikropartitionen aufgrund von Einfügungen oder der Anwendung von Gruppierungsschlüsseln eine inhärente Ordnung bestehen mag, sind der Abfrageoptimierer von Snowflake und seine zugrunde liegende Architektur so konzipiert, dass sie diese Mikropartitionen während der Abfrageausführung effizient bereinigen, unabhängig von einer vordefinierten globalen Sortierreihenfolge. Dieser Ansatz, kombiniert mit automatischem Caching und einem spaltenbasierten Speicherformat, ermöglicht es Snowflake, eine hohe Leistung zu erzielen, ohne dass Benutzende physische Datenstrukturen wie die Projektionen von Vertica manuell definieren und verwalten müssen, wodurch die Datenverwaltung und die Optimierung für eine größere Bandbreite von Abfragemustern ohne explizite physische Sortierungsdefinitionen vereinfacht wird.
Aus diesen Gründen sind die folgenden Klauseln in Snowflake nicht mehr erforderlich und werden aus dem ursprünglichen Code entfernt:
[ segmentation-spec ]
[ KSAFE [safety] ]
[ partition-clause]
Klausel für geerbte Schemaberechtigungen¶
INCLUDE SCHEMA PRIVILEGES ist ein Vertica-spezifisches Feature, das regelt, wie Berechtigungen vererbt werden (in diesem Fall möglicherweise von der Schemaebene). Snowflake hat kein direktes Äquivalent für diese Klausel in seiner CREATE TABLE-Syntax. Berechtigungen in Snowflake werden explizit über GRANT-Anweisungen verwaltet.
Warnung
Diese Syntax wird in Snowflake nicht unterstützt.
Beispielquelle¶
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" }}';
Einschränkungen¶
IDENTITY - AUTO_INCREMENT¶
Erstellt eine Tabellenspalte, deren Werte automatisch von der Datenbank generiert und von dieser verwaltet werden. Werte in dieser Spalte können Sie nicht ändern oder laden. Sie können diese Einschränkung nur für eine Tabellenspalte festlegen.
Success
Diese Syntax wird in Snowflake vollständig unterstützt.
Beispielquelle¶
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" }}';
CHECK-Einschränkung¶
Die CHECK-Klausel in Vertica erfordert neue oder aktualisierte Zeilen, um einen booleschen Ausdruck zu erfüllen. Snowflake hat kein Äquivalent zu dieser Klausel. Daher fügt SnowConvert AI fügt eine EWI hinzu. Dies wird als CHECK-Attribut oder Tabelleneinschränkung im konvertierten Code zurückgegeben.
Gefahr
Diese Syntax wird in Snowflake nicht unterstützt.
Beispielquelle¶
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" }}';
DEFAULT-Einschränkung¶
Warnung
Diese Syntax wird in Snowflake teilweise unterstützt.
Die grundlegenden DEFAULT-Klausel von Vertica wird vollständig unterstützt und direkt in Snowflake übersetzt. Für Verticas DEFAULT USING-Klausel ist die Übersetzung jedoch teilweise. Snowflake wendet den DEFAULT-Wert korrekt an, wenn neue Zeilen eingefügt werden, aber die Fähigkeit zur verzögerten Aktualisierung durch den USING-Teil hat kein direktes Äquivalent und einige Ausdrücke werden in Snowflake möglicherweise nicht unterstützt. Daher wird eine Warnung hinzugefügt, um auf diesen Funktionsunterschied aufmerksam zu machen.
Beispielquelle¶
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 behält die Einschränkungsdefinitionen bei; in Snowflake werden diese Eigenschaften jedoch bereitgestellt, um die Migration von anderen Datenbanken zu erleichtern. Sie werden nicht von Snowflake durchgesetzt oder verwaltet. Das bedeutet, dass die Standardwerte für diese Eigenschaften geändert werden können, aber das Ändern der Standardwerte führt dazu, dass Snowflake die Einschränkung nicht erstellt.
Warnung
Diese Syntax wird in Snowflake teilweise unterstützt.
Beispielquelle¶
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¶
Beschreibung¶
Erstellt und lädt eine Tabelle aus den Ergebnissen einer Abfrage. (Vertica SQL-Sprachreferenz – CREATE TABLE).
Warnung
Diese Syntax wird in Snowflake teilweise unterstützt. Übersetzung für die folgenden Klauseln ausstehend:
[ /*+ LABEL */ ]
[ AT epoch ]
[ ENCODED BY column-ref-list ]
[ ENCODING encoding-type ]
[ ACCESSRANK integer ]
[ GROUPED ( column-reference[,...] ) ]
Grammatikalische 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[,...] ) ]
Optionen für Tabellen¶
Segmentierungsklausel¶
Diese Syntax ist in Snowflake nicht erforderlich und wird aus dem ursprünglichen Code entfernt. Weitere Informationen finden Sie unter Projektionsklauseln.
Bemerkung
Diese Syntax ist in Snowflake nicht erforderlich.
Klausel für geerbte Schemaberechtigungen¶
INCLUDE SCHEMA PRIVILEGES ist ein Vertica-spezifisches Feature, das regelt, wie Berechtigungen vererbt werden (in diesem Fall möglicherweise von der Schemaebene). Snowflake hat kein direktes Äquivalent für diese Klausel in seiner CREATE TABLE-Syntax. Weitere Informationen dazu finden Sie unter Klausel mit vererbten Schemaberechtigungen.
Warnung
Diese Syntax wird in Snowflake nicht unterstützt.
Zugehörige EWIs¶
SSC-EWI-VT0001: Die Klausel für geerbte Berechtigungen wird in Snowflake nicht unterstützt.
CREATE TABLE LIKE¶
Beschreibung¶
Erstellt die Tabelle durch Replikation einer bestehenden Tabelle. (Vertica SQL-Sprachreferenz – CREATE TABLE).
Warnung
Diese Syntax wird in Snowflake teilweise unterstützt. Übersetzung für folgende Klausel ausstehend:
DISK_QUOTA quota
Grammatikalische Syntax¶
CREATE TABLE [ IF NOT EXISTS ] [[database.]schema.]table
LIKE [[database.]schema.]existing-table
[ {INCLUDING | EXCLUDING} PROJECTIONS ]
[ {INCLUDE | EXCLUDE} [SCHEMA] PRIVILEGES ]
[ DISK_QUOTA quota ]
Optionen für Tabellen¶
Projektionen¶
Diese Syntax ist in Snowflake nicht erforderlich und wird aus dem ursprünglichen Code entfernt. Weitere Informationen finden Sie unter Projektionsklauseln.
Warnung
Diese Syntax ist in Snowflake nicht erforderlich.
Klausel für geerbte Schemaberechtigungen¶
INCLUDE SCHEMA PRIVILEGES ist ein Vertica-spezifisches Feature, das regelt, wie Berechtigungen vererbt werden (in diesem Fall möglicherweise von der Schemaebene). Snowflake hat kein direktes Äquivalent für diese Klausel in seiner CREATE TABLE-Syntax. Weitere Informationen dazu finden Sie unter Klausel mit vererbten Schemaberechtigungen.
Warnung
Diese Syntax wird in Snowflake nicht unterstützt.
Zugehörige EWIs¶
SSC-EWI-VT0001: Die Klausel für geerbte Berechtigungen wird in Snowflake nicht unterstützt.