SnowConvert AI - Vertica - CREATE TABLE

説明

論理スキーマにテーブルを作成します。( VerticaSQL 言語リファレンスCreate Table )。

警告

この構文はSnowflakeで部分的にサポートされています。これらの句の翻訳は保留中です。

DISK_QUOTA quota
SET USING expression
ENCODING encoding-type 
ACCESSRANK integer
Copy

文法構文

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 ]
}
Copy

テーブルオプション

Order by

Verticaでは、この ORDER BY 句は、テーブルの最適化されたストレージ構造である superprojection 内で、データが物理的にどのようにソートされるかを指定します。このテーブル作成時の明示的な物理的順序は、Snowflakeでは直接サポートされていません。詳細は SSC-EWI-VT0002. をご参照ください。

サンプルソース

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;
Copy
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" }}';
Copy

Projections句

VerticaのProjectionsは、ディスク上のデータの物理的な順序を定義し維持するメカニズムで、特定のアクセスパターンに対してクエリのパフォーマンスを最適化します。しかし、Snowflakeは根本的に異なるストレージと最適化戦略を採用しています。Snowflakeのデータは自動的に不変の マイクロパーティション に分割され、クラウドサービスによって整理され管理されます。

挿入または クラスタリングキー の適用により、これらのマイクロパーティション内に固有の順序が存在する可能性がありますが、Snowflakeのクエリオプティマイザーとその基礎となるアーキテクチャは、事前に定義されたグローバルなソート順序に関係なく、クエリ実行中にこれらのマイクロパーティションを効率的にプルーニングするように設計されています。このアプローチと自動キャッシング、列指向ストレージ形式を組み合わせることで、Snowflakeは、VerticaのProjectionsような物理的なデータ構造をユーザーが手動で定義・管理することなく、高いパフォーマンスを実現させています。したがって、データ管理が簡素化され、明示的な物理的ソート定義なしに、より幅広いクエリパターンに最適化されます。

これらの理由により、以下の句はSnowflakeでは不要であり、元のコードから削除されています。

[ segmentation-spec ]
[ KSAFE [safety] ]
[ partition-clause]
Copy

Inherited Schema Privileges句

INCLUDE SCHEMA PRIVILEGES はVertica固有の関数で、権限がどのように継承されるか(この場合はスキーマレベルから)を規定します。Snowflakeには、 CREATE TABLE 構文内にこの句に直接相当するものがありません。Snowflakeにおける権限は、 GRANT ステートメントによって明示的に管理されます。

警告

この構文はSnowflakeではサポートされていません。

サンプルソース

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;
Copy
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" }}';
Copy

制約

IDENTITY - AUTO_INCREMENT

値がデータベースによって自動的に生成され、管理されるテーブル列を作成します。この列の値を変更したり、ロードしたりすることはできません。この制約は1つのテーブル列にのみ設定できます。

Success

この構文はSnowflakeで完全にサポートされています。

サンプルソース

Vertica
CREATE TABLE customers (
  id AUTO_INCREMENT(1, 2),
  name VARCHAR(50)
);

CREATE TABLE customers2 (
  id IDENTITY(1, 2),
  name VARCHAR(50)
);
Copy
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" }}';
Copy

CHECK 制約

Verticaの CHECK 句は、新規または更新された行がブール式を満たすことを要求します。Snowflakeにはこの句に相当するものがないため、 SnowConvert AI は EWI を追加します。変換後のコードでは、これは CHECK 属性またはテーブル制約として適用されます。

危険

この構文はSnowflakeではサポートされていません。

サンプルソース

Vertica
CREATE TABLE table1 (
    product_id INT PRIMARY KEY,
    quantity INT CHECK (quantity >= 0)
);
Copy
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" }}';
Copy

DEFAULT 制約

警告

この構文はSnowflakeで部分的にサポートされています。

Verticaの基本的な DEFAULT 句は完全にサポートされており、Snowflakeに直接変換されます。しかし、Verticaの DEFAULT USING 句については、翻訳は部分的なものです。Snowflakeは、新しい行が挿入されると DEFAULT の値を正しく適用しますが、 USING 部分の更新の遅延機能には直接相当するものがなく、一部の式はSnowflakeでサポートされない可能性があります。そのため、この機能の違いを強調するために警告が追加されます。

サンプルソース

Vertica
CREATE TABLE table1 (
    base_value INT,
    status_code INT DEFAULT 0,
    derived_value INT DEFAULT USING (base_value + 100)
);
Copy
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" }}';
Copy

PRIMARY KEY - UNIQUE - FOREIGN KEY

SnowConvert AI は制約定義を保持しますが、Snowflakeでは、これらのプロパティは他のデータベースからの移行を容易にするために提供されています。Snowflakeによって強制保守されていません。これは、これらのプロパティのデフォルトを変更できることを意味しますが、デフォルトを変更すると、Snowflakeが制約を作成しなくなります。

警告

この構文はSnowflakeで部分的にサポートされています。

サンプルソース

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
);
Copy
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" }}';
Copy

CREATE TABLE AS

説明

クエリの結果 からテーブルを作成し、ロードします。( Vertica SQL 言語リファレンスCreate Table )。

警告

この構文はSnowflakeで部分的にサポートされています。次の句の翻訳は保留中です。

[ /*+ LABEL */ ]
[ AT epoch ]
[ ENCODED BY column-ref-list ]
[ ENCODING encoding-type ]
[ ACCESSRANK integer ]
[ GROUPED ( column-reference[,...] ) ]
Copy

文法構文

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[,...] ) ]
Copy

テーブルオプション

Segmentation句

この構文はSnowflakeでは必要なく、元のコードからは削除されています。詳しくは、Projections句 を参照してください。

注釈

Snowflakeではこの構文は必要ありません。

Inherited Schema Privileges句

INCLUDE SCHEMA PRIVILEGES はVertica固有の関数で、権限がどのように継承されるか(この場合はスキーマレベルから)を規定します。Snowflakeには、 CREATE TABLE 構文内にこの句に直接相当するものがありません。詳しくは Inherited Schema Privileges句 を参照してください。

警告

この構文はSnowflakeではサポートされていません。

関連 EWIs

  1. SSC-EWI-VT0001 :Snowflakeでは、Inherited privileges句はサポートされていません。

CREATE TABLE LIKE

説明

既存のテーブルを複製する ことでテーブルを作成します。( Vertica SQL 言語リファレンスCreate Table )。

警告

この構文はSnowflakeで部分的にサポートされています。次の句の翻訳は保留中です。

DISK_QUOTA quota
Copy

文法構文

CREATE TABLE [ IF NOT EXISTS ] [[database.]schema.]table
  LIKE [[database.]schema.]existing-table
  [ {INCLUDING | EXCLUDING} PROJECTIONS ]
  [ {INCLUDE | EXCLUDE} [SCHEMA] PRIVILEGES ]
  [ DISK_QUOTA quota ]
Copy

テーブルオプション

Projections

この構文はSnowflakeでは必要なく、元のコードからは削除されています。詳しくは、Projections句 を参照してください。

警告

Snowflakeではこの構文は必要ありません。

Inherited Schema Privileges句

INCLUDE SCHEMA PRIVILEGES はVertica固有の関数で、権限がどのように継承されるか(この場合はスキーマレベルから)を規定します。Snowflakeには、 CREATE TABLE 構文内にこの句に直接相当するものがありません。詳しくは Inherited Schema Privileges句 を参照してください。

警告

この構文はSnowflakeではサポートされていません。

関連 EWIs

  1. SSC-EWI-VT0001 :Snowflakeでは、Inherited privileges句はサポートされていません。