SnowConvert AI - Vertica - CREATE TABLE¶
Descrição¶
Cria uma tabela no esquema lógico. (Referência de linguagem Vertica SQL “create table”.
Aviso
Essa sintaxe é parcialmente suportada no Snowflake. Tradução pendente para estas cláusulas:
DISK_QUOTA quota
SET USING expression
ENCODING encoding-type
ACCESSRANK integer
Sintaxe da gramática¶
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 ]
}
Opções de tabela¶
Order by¶
No Vertica, a cláusula ORDER BY especifica como os dados são classificados fisicamente dentro de uma superprojeção, uma estrutura de armazenamento otimizada para uma tabela. Essa ordenação física explícita na criação da tabela não é diretamente suportada no Snowflake. Para mais informações, consulte SSC-EWI-VT0002.
Fonte da amostra¶
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" }}';
Cláusulas de projeções¶
As projeções do Vertica são um mecanismo para definir e manter a ordem de classificação física dos dados no disco, otimizando assim o desempenho da consulta para padrões de acesso específicos. No entanto, o Snowflake usa uma estratégia de armazenamento e otimização fundamentalmente diferente. Os dados no Snowflake são divididos automaticamente em micropartições imutáveis, que são então organizadas e gerenciadas pelo serviço de nuvem.
Embora possa existir uma ordem inerente dentro dessas micropartições devido à inserção ou a aplicação de chaves de clustering, o otimizador de consulta do Snowflake e sua arquitetura subjacente foram feitos para remover essas micropartições de forma eficiente durante a execução da consulta, independentemente de uma ordem de classificação global pré-definida. Essa abordagem, combinada com cache automático e um formato de armazenamento colunar, permite que o Snowflake tenha alto desempenho sem exigir que os usuários definam e gerenciem manualmente estruturas de dados físicas, como as projeções de Vertica. Isso simplifica o gerenciamento de dados e é uma forma de otimizar para uma gama mais ampla de padrões de consulta sem definições de classificação físicas explícitas.
Por esses motivos, as seguintes cláusulas não são necessárias no Snowflake e são removidas do código original:
[ segmentation-spec ]
[ KSAFE [safety] ]
[ partition-clause]
Cláusula “Inherited Schema Privileges”¶
INCLUDE SCHEMA PRIVILEGES é um recurso específico do Vertica que controla como os privilégios são herdados, neste caso, potencialmente do nível do esquema. O Snowflake não tem um equivalente direto para essa cláusula na sintaxe CREATE TABLE. No Snowflake, os privilégios são gerenciados explicitamente por meio de instruções GRANT.
Aviso
Essa sintaxe não é compatível com o Snowflake.
Fonte da amostra¶
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" }}';
Restrições¶
IDENTITY - AUTO_INCREMENT¶
Cria uma coluna de tabela com valores gerados e gerenciados automaticamente pelo banco de dados. Você não pode alterar ou carregar valores nesta coluna. Essa restrição só pode ser definida em uma coluna da tabela.
Sucesso
Essa sintaxe é totalmente compatível com o Snowflake.
Fonte da amostra¶
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" }}';
Uma restrição CHECK¶
A cláusula CHECK do Vertica requer linhas novas ou atualizadas para satisfazer uma expressão booleana. O Snowflake não tem um equivalente para essa cláusula, então o SnowConvert AI adicionará um EWI. Ele será aplicado como um atributo CHECK ou restrição de tabela no código convertido.
Perigo
Essa sintaxe não é compatível com o Snowflake.
Fonte da amostra¶
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" }}';
Uma restrição DEFAULT¶
Aviso
Essa sintaxe é parcialmente compatível com o Snowflake.
A cláusula básica DEFAULT do Vertica é totalmente suportada e é traduzida diretamente para o Snowflake. No entanto, para a cláusula DEFAULT USING do Vertica, a tradução é parcial. O Snowflake aplicará corretamente o valor DEFAULT quando novas linhas forem inseridas, mas o recurso de atualização diferido da porção USING não tem equivalente direto e algumas expressões podem não ser suportadas no Snowflake. Portanto, um aviso é adicionado para destacar essa diferença funcional.
Fonte da amostra¶
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¶
O SnowConvert AI mantém as definições de restrição; entretanto, no Snowflake, essas propriedades são fornecidas para facilitar a migração de outros bancos de dados. Elas não são impostas ou mantidas pelo Snowflake. Isso significa que os padrões podem ser alterados para essas propriedades, mas se os padrões forem alterados, o Snowflake não criará a restrição.
Aviso
Essa sintaxe é parcialmente compatível com o Snowflake.
Fonte da amostra¶
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¶
Descrição¶
Cria e carrega uma tabela com os resultados de uma consulta. (Referência de linguagem do Vertica SQL “Create Table”).
Aviso
Essa sintaxe é parcialmente suportada no Snowflake. Tradução pendente para as seguintes cláusulas
[ /*+ LABEL */ ]
[ AT epoch ]
[ ENCODED BY column-ref-list ]
[ ENCODING encoding-type ]
[ ACCESSRANK integer ]
[ GROUPED ( column-reference[,...] ) ]
Sintaxe da gramática¶
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[,...] ) ]
Opções de tabela¶
Cláusula de segmentação¶
Essa sintaxe não é necessária no Snowflake e é removida do código original. Para mais informações, consulte as cláusulas de projeção.
Nota
Essa sintaxe não é necessária no Snowflake.
Cláusula “Inherited Schema Privileges”¶
INCLUDE SCHEMA PRIVILEGES é um recurso específico do Vertica que controla como os privilégios são herdados, neste caso, potencialmente do nível do esquema. O Snowflake não tem um equivalente direto para essa cláusula na sintaxe CREATE TABLE. Para mais informações, consulte a cláusula “Schema Privileges” herdada.
Aviso
Essa sintaxe não é compatível com o Snowflake.
EWIs relacionados¶
SSC-EWI-VT0001: A cláusula de privilégios herdados não é suportada no Snowflake.
CREATE TABLE LIKE¶
Descrição¶
Cria a tabela replicando uma tabela existente. (Referência de linguagem do Vertica SQL “Create Table”).
Aviso
Essa sintaxe é parcialmente suportada no Snowflake. Tradução pendente para a seguinte cláusula:
DISK_QUOTA quota
Sintaxe da gramática¶
CREATE TABLE [ IF NOT EXISTS ] [[database.]schema.]table
LIKE [[database.]schema.]existing-table
[ {INCLUDING | EXCLUDING} PROJECTIONS ]
[ {INCLUDE | EXCLUDE} [SCHEMA] PRIVILEGES ]
[ DISK_QUOTA quota ]
Opções de tabela¶
Projeções¶
Essa sintaxe não é necessária no Snowflake e é removida do código original. Para mais informações, consulte as cláusulas de projeção.
Aviso
Essa sintaxe não é necessária no Snowflake.
Cláusula “Inherited Schema Privileges”¶
INCLUDE SCHEMA PRIVILEGES é um recurso específico do Vertica que controla como os privilégios são herdados, neste caso, potencialmente do nível do esquema. O Snowflake não tem um equivalente direto para essa cláusula na sintaxe CREATE TABLE. Para mais informações, consulte a cláusula “Schema Privileges” herdada.
Aviso
Essa sintaxe não é compatível com o Snowflake.
EWIs relacionados¶
SSC-EWI-VT0001: A cláusula de privilégios herdados não é suportada no Snowflake.