SnowConvert AI - PostgreSQL - CREATE TABLE¶
PostgreSqlからSnowflakeへの変換
適用先¶
PostgreSQL
Greenplum
Netezza
説明¶
PostgreSQLで新しいテーブルを作成します。列のリストを定義し、それぞれの列は異なる型のデータを保持します。テーブルの所有者は、CREATE TABLEコマンドの発行者です。
詳しくは、 CREATE TABLE のドキュメントをご参照ください。
文法構文¶
CREATE [ [ GLOBAL | LOCAL ] { TEMPORARY | TEMP } | UNLOGGED ] TABLE [ IF NOT EXISTS ] table_name ( [
{ column_name data_type [ STORAGE { PLAIN | EXTERNAL | EXTENDED | MAIN | DEFAULT } ] [ COMPRESSION compression_method ] [ COLLATE collation ] [ column_constraint [ ... ] ]
| table_constraint
| LIKE source_table [ like_option ... ] }
[, ... ]
] )
[ INHERITS ( parent_table [, ... ] ) ]
[ PARTITION BY { RANGE | LIST | HASH } ( { column_name | ( expression ) } [ COLLATE collation ] [ opclass ] [, ... ] ) ]
[ USING method ]
[ WITH ( storage_parameter [= value] [, ... ] ) | WITHOUT OIDS ]
[ ON COMMIT { PRESERVE ROWS | DELETE ROWS | DROP } ]
[ TABLESPACE tablespace_name ]
CREATE [ [ GLOBAL | LOCAL ] { TEMPORARY | TEMP } | UNLOGGED ] TABLE [ IF NOT EXISTS ] table_name
OF type_name [ (
{ column_name [ WITH OPTIONS ] [ column_constraint [ ... ] ]
| table_constraint }
[, ... ]
) ]
[ PARTITION BY { RANGE | LIST | HASH } ( { column_name | ( expression ) } [ COLLATE collation ] [ opclass ] [, ... ] ) ]
[ USING method ]
[ WITH ( storage_parameter [= value] [, ... ] ) | WITHOUT OIDS ]
[ ON COMMIT { PRESERVE ROWS | DELETE ROWS | DROP } ]
[ TABLESPACE tablespace_name ]
CREATE [ [ GLOBAL | LOCAL ] { TEMPORARY | TEMP } | UNLOGGED ] TABLE [ IF NOT EXISTS ] table_name
PARTITION OF parent_table [ (
{ column_name [ WITH OPTIONS ] [ column_constraint [ ... ] ]
| table_constraint }
[, ... ]
) ] { FOR VALUES partition_bound_spec | DEFAULT }
[ PARTITION BY { RANGE | LIST | HASH } ( { column_name | ( expression ) } [ COLLATE collation ] [ opclass ] [, ... ] ) ]
[ USING method ]
[ WITH ( storage_parameter [= value] [, ... ] ) | WITHOUT OIDS ]
[ ON COMMIT { PRESERVE ROWS | DELETE ROWS | DROP } ]
[ TABLESPACE tablespace_name ]
where column_constraint is:
[ CONSTRAINT constraint_name ]
{ NOT NULL |
NULL |
CHECK ( expression ) [ NO INHERIT ] |
DEFAULT default_expr |
GENERATED ALWAYS AS ( generation_expr ) STORED |
GENERATED { ALWAYS | BY DEFAULT } AS IDENTITY [ ( sequence_options ) ] |
UNIQUE [ NULLS [ NOT ] DISTINCT ] index_parameters |
PRIMARY KEY index_parameters |
REFERENCES reftable [ ( refcolumn ) ] [ MATCH FULL | MATCH PARTIAL | MATCH SIMPLE ]
[ ON DELETE referential_action ] [ ON UPDATE referential_action ] }
[ DEFERRABLE | NOT DEFERRABLE ] [ INITIALLY DEFERRED | INITIALLY IMMEDIATE ]
and table_constraint is:
[ CONSTRAINT constraint_name ]
{ CHECK ( expression ) [ NO INHERIT ] |
UNIQUE [ NULLS [ NOT ] DISTINCT ] ( column_name [, ... ] ) index_parameters |
PRIMARY KEY ( column_name [, ... ] ) index_parameters |
EXCLUDE [ USING index_method ] ( exclude_element WITH operator [, ... ] ) index_parameters [ WHERE ( predicate ) ] |
FOREIGN KEY ( column_name [, ... ] ) REFERENCES reftable [ ( refcolumn [, ... ] ) ]
[ MATCH FULL | MATCH PARTIAL | MATCH SIMPLE ] [ ON DELETE referential_action ] [ ON UPDATE referential_action ] }
[ DEFERRABLE | NOT DEFERRABLE ] [ INITIALLY DEFERRED | INITIALLY IMMEDIATE ]
and like_option is:
{ INCLUDING | EXCLUDING } { COMMENTS | COMPRESSION | CONSTRAINTS | DEFAULTS | GENERATED | IDENTITY | INDEXES | STATISTICS | STORAGE | ALL }
and partition_bound_spec is:
IN ( partition_bound_expr [, ...] ) |
FROM ( { partition_bound_expr | MINVALUE | MAXVALUE } [, ...] )
TO ( { partition_bound_expr | MINVALUE | MAXVALUE } [, ...] ) |
WITH ( MODULUS numeric_literal, REMAINDER numeric_literal )
index_parameters in UNIQUE, PRIMARY KEY, and EXCLUDE constraints are:
[ INCLUDE ( column_name [, ... ] ) ]
[ WITH ( storage_parameter [= value] [, ... ] ) ]
[ USING INDEX TABLESPACE tablespace_name ]
exclude_element in an EXCLUDE constraint is:
{ column_name | ( expression ) } [ COLLATE collation ] [ opclass [ ( opclass_parameter = value [, ... ] ) ] ] [ ASC | DESC ] [ NULLS { FIRST | LAST } ]
referential_action in a FOREIGN KEY/REFERENCES constraint is:
{ NO ACTION | RESTRICT | CASCADE | SET NULL [ ( column_name [, ... ] ) ] | SET DEFAULT [ ( column_name [, ... ] ) ] }
テーブルオプション¶
TEMPORARY | TEMP、またはIF NOT EXISTS¶
Hint
この構文はSnowflakeで完全にサポートされています。
GLOBAL | LOCAL¶
注釈
Snowflakeではこの構文は必要ありません。
PostgreSQLのドキュメントによると、GLOBAL | LOCAL は、SQL Standardとの互換性のために存在しますが、PostgreSQLでは何の効果もなく、非推奨となっています。そのため、SnowConvert AIでは、移行プロセス中にこれらのキーワークは削除されます。
サンプルソース¶
入力コード:
PostgreSQL¶
CREATE GLOBAL TEMP TABLE TABLE1 (
COL1 integer
);
出力コード:
Snowflake¶
CREATE TEMPORARY TABLE TABLE1 (
COL1 integer
)
COMMENT = '{ "origin": "sf_sc", "name": "snowconvert", "version": { "major": 0, "minor": 0, "patch": "0" }, "attributes": { "component": "postgresql", "convertedOn": "05/09/2025", "domain": "no-domain-provided" }}';
UNLOGGED に TABLE¶
注釈
Snowflakeではこの構文は必要ありません。
UNLOGGEDテーブルは、先行書き込みログに書き込まれないので、スピード面で大きな利点があります。Snowflakeはこの機能をサポートしていないので、 UNLOGGED 句はコメントアウトされます。
コード例¶
入力コード:¶
Greenplum¶
CREATE UNLOGGED TABLE TABLE1 (
COL1 integer
);
出力コード:¶
Snowflake¶
CREATE
-- --** SSC-FDM-PG0005 - UNLOGGED TABLE IS NOT SUPPORTED IN SNOWFLAKE, DATA WRITTEN MAY HAVE DIFFERENT PERFORMANCE. **
-- UNLOGGED
TABLE TABLE1 (
COL1 integer
)
COMMENT = '{ "origin": "sf_sc", "name": "snowconvert", "version": { "major": 0, "minor": 0, "patch": "0" }, "attributes": { "component": "postgresql", "convertedOn": "05/09/2025", "domain": "no-domain-provided" }}';
列属性¶
CHECK 属性¶
危険
この構文はSnowflakeではサポートされていません。
CHECK句は、新規行や更新行が挿入や更新を成功させるために満たさなければならないブール値の結果を生成する式を指定します。Snowflakeはこの句と等価性を持りません。SnowConvert AIはEWIを追加します。これは、CHECK属性またはテーブル制約として適用されます。
文法構文
CHECK ( <expression> )
サンプルソース¶
入力コード:
PostgreSQL¶
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": "postgresql", "convertedOn": "05/09/2025", "domain": "no-domain-provided" }}';
GENERATED BY DEFAULT AS IDENTITY¶
Hint
この構文はSnowflakeで完全にサポートされています。
列がデフォルトのIDENTITY列であることを指定し、列に一意の値を自動的に割り当てることができます。
文法構文
GENERATED { ALWAYS | BY DEFAULT } AS IDENTITY [ ( <sequence_options> ) ]
サンプルソース¶
入力コード:
PostgreSQL¶
CREATE TABLE table1 (
idValue INTEGER GENERATED ALWAYS AS IDENTITY)
出力コード:
Snowflake¶
CREATE TABLE table1 (
idValue INTEGER IDENTITY(1, 1) ORDER
)
COMMENT = '{ "origin": "sf_sc", "name": "snowconvert", "version": { "major": 0, "minor": 0, "patch": "0" }, "attributes": { "component": "postgresql", "convertedOn": "05/09/2025", "domain": "no-domain-provided" }}'
テーブルの制約¶
主キー、外部キー、一意キー¶
警告
この構文はSnowflakeで部分的にサポートされています。
SnowConvert AIは、制約の定義を維持します。しかし、Snowflakeでは、一意キー、主キー、外部キーはドキュメントのために使用され、制約や一意性を強制するものではありません。テーブルの関係を記述するのに役立ちますが、データの整合性やパフォーマンスには影響しません。
テーブル属性¶
LIKEオプション¶
警告
この構文はSnowflakeで部分的にサポートされています。
LIKE 句は、新しいテーブルが自動的にすべての列名、そのデータ型、およびそれらのnot-null制約をコピーするテーブルを指定します。PostgreSQLはいくつかのオプションをサポートしていますが、Snowflakeはサポートしていませんので、SnowConvert AIではそのようなオプションは削除されます。
文法構文¶
LIKE source_table { INCLUDING | EXCLUDING }
{ AM | COMMENTS | CONSTRAINTS | DEFAULTS | ENCODING | GENERATED | IDENTITY | INDEXES | RELOPT | STATISTICS | STORAGE | ALL }
サンプルソースパターン¶
入力コード:
PostgreSQL¶
CREATE TABLE source_table (
id INT,
name VARCHAR(255),
created_at TIMESTAMP,
status BOOLEAN
);
CREATE TABLE target_table_no_constraints (LIKE source_table INCLUDING DEFAULTS EXCLUDING CONSTRAINTS EXCLUDING INDEXES);
出力コード:
Snowflake¶
CREATE TABLE source_table (
id INT,
name VARCHAR(255),
created_at TIMESTAMP,
status BOOLEAN
)
COMMENT = '{ "origin": "sf_sc", "name": "snowconvert", "version": { "major": 0, "minor": 0, "patch": "0" }, "attributes": { "component": "postgresql", "convertedOn": "05/12/2025", "domain": "no-domain-provided" }}';
CREATE TABLE target_table_no_constraints LIKE source_table;
ON COMMIT¶
警告
この構文は部分的にサポートされています。
コミット時の一時テーブルの動作を指定します。
文法構文¶
ON COMMIT { PRESERVE ROWS | DELETE ROWS | DROP }
サンプルソースパターン¶
入力コード:¶
PostgreSQL¶
CREATE GLOBAL TEMPORARY TABLE temp_data_delete (
id INT,
data TEXT
) ON COMMIT DELETE ROWS;
出力コード:¶
Snowflake¶
CREATE TEMPORARY TABLE temp_data_delete (
id INT,
data TEXT
)
----** SSC-FDM-0008 - ON COMMIT NOT SUPPORTED **
--ON COMMIT DELETE ROWS
COMMENT = '{ "origin": "sf_sc", "name": "snowconvert", "version": { "major": 0, "minor": 0, "patch": "0" }, "attributes": { "component": "postgresql", "convertedOn": "05/12/2025", "domain": "no-domain-provided" }}';
PARTITIONBY、USING、TABLESPACE、およびWITH¶
注釈
Snowflakeではこの構文は必要ありません。
Snowflakeでは、PostgreSQLとは異なり、手動で設定できるデータストレージを自動的に処理するため、これらの句は不要です。このため、これらの句は移行中に削除されます。