カテゴリ:

テーブル、ビュー、シーケンス DDL

CREATE TABLE

現在の/指定されたスキーマに新しいテーブルを作成するか、既存のテーブルを置き換えます。テーブルには複数の列を含めることができ、各列の定義は名前、データ型に加え、オプションで列に次があるかどうかにより構成されます。

  • 値(NOT NULL)が必要かどうか。

  • デフォルト値があるかどうか。

  • 参照整合性の制約(主キー、外部キーなど)があるかどうか。

さらに、このコマンドは次のバリアントをサポートしています。

  • CREATE TABLE ... AS SELECT (データが入ったテーブルを作成。 CTAS とも呼ばれる)

  • CREATETABLE ... LIKE (既存のテーブルの空のコピーを作成)

  • CREATETABLE ... CLONE (既存のテーブルのクローンを作成)

こちらもご参照ください:

ALTER TABLEDROP TABLESHOW TABLES

このトピックの内容:

構文

CREATE [ OR REPLACE ] [ { [ LOCAL | GLOBAL ] TEMP[ORARY] | VOLATILE } | TRANSIENT ] TABLE [ IF NOT EXISTS ]
  <table_name>
    ( <col_name> <col_type>
                             [ COLLATE '<collation_specification>' ]
                                /* COLLATE is supported only for text data types (VARCHAR and synonyms) */
                             [ { DEFAULT <expr>
                               | { AUTOINCREMENT | IDENTITY } [ ( <start_num> , <step_num> ) | START <num> INCREMENT <num> ] } ]
                                /* AUTOINCREMENT (or IDENTITY) is supported only for numeric data types (NUMBER, INT, FLOAT, etc.) */
                             [ NOT NULL ]
                             [ inlineConstraint ]
      [ , <col_name> <col_type> [ ... ] ]
      [ , outoflineConstraint ]
      [ , ... ] )
  [ CLUSTER BY ( <expr> [ , <expr> , ... ] ) ]
  [ STAGE_FILE_FORMAT = ( { FORMAT_NAME = '<file_format_name>'
                           | TYPE = { CSV | JSON | AVRO | ORC | PARQUET | XML } [ formatTypeOptions ] } ) ]
  [ STAGE_COPY_OPTIONS = ( copyOptions ) ]
  [ DATA_RETENTION_TIME_IN_DAYS = <num> ]
  [ CHANGE_TRACKING = { TRUE | FALSE } ]
  [ DEFAULT_DDL_COLLATION = '<collation_specification>' ]
  [ COPY GRANTS ]
  [ COMMENT = '<string_literal>' ]

条件:

inlineConstraint ::=
  [ CONSTRAINT <constraint_name> ]
  { UNIQUE | PRIMARY KEY | { [ FOREIGN KEY ] REFERENCES <ref_table_name> [ ( <ref_col_name> ) ] } }
  [ <constraint_properties> ]

インライン制約の詳細については、 CREATE | ALTER TABLE ... CONSTRAINT をご参照ください。

outoflineConstraint ::=
  [ CONSTRAINT <constraint_name> ]
  {
     UNIQUE [ ( <col_name> [ , <col_name> , ... ] ) ]
   | PRIMARY KEY [ ( <col_name> [ , <col_name> , ... ] ) ]
   | [ FOREIGN KEY ] [ ( <col_name> [ , <col_name> , ... ] ) ]
                     REFERENCES <ref_table_name> [ ( <ref_col_name> [ , <ref_col_name> , ... ] ) ]
  }
  [ <constraint_properties> ]

アウトライン制約の詳細については、 CREATE | ALTER TABLE ... CONSTRAINT をご参照ください。

formatTypeOptions ::=
-- If TYPE = CSV
     COMPRESSION = AUTO | GZIP | BZ2 | BROTLI | ZSTD | DEFLATE | RAW_DEFLATE | NONE
     RECORD_DELIMITER = '<character>' | NONE
     FIELD_DELIMITER = '<character>' | NONE
     FILE_EXTENSION = '<string>'
     SKIP_HEADER = <integer>
     SKIP_BLANK_LINES = TRUE | FALSE
     DATE_FORMAT = '<string>' | AUTO
     TIME_FORMAT = '<string>' | AUTO
     TIMESTAMP_FORMAT = '<string>' | AUTO
     BINARY_FORMAT = HEX | BASE64 | UTF8
     ESCAPE = '<character>' | NONE
     ESCAPE_UNENCLOSED_FIELD = '<character>' | NONE
     TRIM_SPACE = TRUE | FALSE
     FIELD_OPTIONALLY_ENCLOSED_BY = '<character>' | NONE
     NULL_IF = ( '<string>' [ , '<string>' ... ] )
     ERROR_ON_COLUMN_COUNT_MISMATCH = TRUE | FALSE
     REPLACE_INVALID_CHARACTERS = TRUE | FALSE
     VALIDATE_UTF8 = TRUE | FALSE
     EMPTY_FIELD_AS_NULL = TRUE | FALSE
     SKIP_BYTE_ORDER_MARK = TRUE | FALSE
     ENCODING = '<string>' | UTF8
-- If TYPE = JSON
     COMPRESSION = AUTO | GZIP | BZ2 | BROTLI | ZSTD | DEFLATE | RAW_DEFLATE | NONE
     DATE_FORMAT = '<string>' | AUTO
     TIME_FORMAT = '<string>' | AUTO
     TIMESTAMP_FORMAT = '<string>' | AUTO
     BINARY_FORMAT = HEX | BASE64 | UTF8
     TRIM_SPACE = TRUE | FALSE
     NULL_IF = ( '<string>' [ , '<string>' ... ] )
     FILE_EXTENSION = '<string>'
     ENABLE_OCTAL = TRUE | FALSE
     ALLOW_DUPLICATE = TRUE | FALSE
     STRIP_OUTER_ARRAY = TRUE | FALSE
     STRIP_NULL_VALUES = TRUE | FALSE
     IGNORE_UTF8_ERRORS = TRUE | FALSE
     SKIP_BYTE_ORDER_MARK = TRUE | FALSE
-- If TYPE = AVRO
     COMPRESSION = AUTO | GZIP | BZ2 | BROTLI | ZSTD | DEFLATE | RAW_DEFLATE | NONE
     TRIM_SPACE = TRUE | FALSE
     NULL_IF = ( '<string>' [ , '<string>' ... ] )
-- If TYPE = ORC
     TRIM_SPACE = TRUE | FALSE
     NULL_IF = ( '<string>' [ , '<string>' ... ] )
-- If TYPE = PARQUET
     COMPRESSION = AUTO | LZO | SNAPPY | NONE
     SNAPPY_COMPRESSION = TRUE | FALSE
     BINARY_AS_TEXT = TRUE | FALSE
     TRIM_SPACE = TRUE | FALSE
     NULL_IF = ( '<string>' [ , '<string>' ... ] )
-- If TYPE = XML
     COMPRESSION = AUTO | GZIP | BZ2 | BROTLI | ZSTD | DEFLATE | RAW_DEFLATE | NONE
     IGNORE_UTF8_ERRORS = TRUE | FALSE
     PRESERVE_SPACE = TRUE | FALSE
     STRIP_OUTER_ELEMENT = TRUE | FALSE
     DISABLE_SNOWFLAKE_DATA = TRUE | FALSE
     DISABLE_AUTO_CONVERT = TRUE | FALSE
     SKIP_BYTE_ORDER_MARK = TRUE | FALSE
     TRIM_SPACE = TRUE | FALSE
     NULL_IF = ( '<string>' [ , '<string>' ... ] )
copyOptions ::=
     ON_ERROR = { CONTINUE | SKIP_FILE | SKIP_FILE_<num> | SKIP_FILE_<num>% | ABORT_STATEMENT }
     SIZE_LIMIT = <num>
     PURGE = TRUE | FALSE
     RETURN_FAILED_ONLY = TRUE | FALSE
     MATCH_BY_COLUMN_NAME = CASE_SENSITIVE | CASE_INSENSITIVE | NONE
     ENFORCE_LENGTH = TRUE | FALSE
     TRUNCATECOLUMNS = TRUE | FALSE
     FORCE = TRUE | FALSE

バリアント構文

CREATE TABLE ... AS SELECT ( CTAS とも呼ばれる)

クエリによって返されたデータが入力される新しいテーブルを作成します。

CREATE [ OR REPLACE ] TABLE <table_name> [ ( <col_name> [ <col_type> ] , <col_name> [ <col_type> ] , ... ) ]
  [ CLUSTER BY ( <expr> [ , <expr> , ... ] ) ]
  [ COPY GRANTS ]
  AS SELECT <query>
  [ ... ]

注釈

CTAS では、 COPY GRANTS 句は、 OR REPLACE 句と組み合わせた場合にのみ有効です。COPY GRANTS は、 SELECT ステートメントでクエリされているソーステーブルからではなく、 CREATE OR REPLACE で置き換えられているテーブル(既に存在する場合)から権限をコピーします。CTAS と合わせて COPY GRANTS を使用すると、テーブルに対する既存の権限を維持しながら、新しいデータセットでテーブルを上書きできます。

COPYGRANTS の詳細については、このドキュメント内の COPY GRANTS をご参照ください。

CREATE TABLE ... LIKE

既存のテーブルと同じ列定義を使用して新しいテーブルを作成しますが、既存のテーブルからデータをコピーしません。列名、タイプ、デフォルト、および制約が新しいテーブルにコピーされます。

CREATE [ OR REPLACE ] TABLE <table_name> LIKE <source_table>
  [ CLUSTER BY ( <expr> [ , <expr> , ... ] ) ]
  [ COPY GRANTS ]
  [ ... ]

COPYGRANTS の詳細については、このドキュメント内の COPY GRANTS をご参照ください。

CREATE TABLE ... CLONE

データを実際にコピーすることなく、同じ列定義を使用して、ソーステーブルのすべての既存データを含む新しいテーブルを作成します。このバリアントは、過去の特定の時間/ポイントでテーブルをクローンするためにも使用できます( Time Travel を使用)。

CREATE [ OR REPLACE ] TABLE <name> CLONE <source_table>
  [ { AT | BEFORE } { TIMESTAMP => <timestamp> | OFFSET => <time_difference> | STATEMENT => <id> } ]
  [ COPY GRANTS ]
  [ ... ]

注釈

ステートメントにより同じ名前の既存のテーブルを置き換える場合、権限は置き換えられるテーブルからコピーされます。その名前の既存のテーブルがない場合、権限はクローンされるソーステーブルからコピーされます。

COPYGRANTS の詳細については、このドキュメント内の COPY GRANTS をご参照ください。

クローンの詳細については、 CREATE <オブジェクト> ... CLONE をご参照ください。

必須パラメーター

名前

テーブルの識別子(つまり、名前)を指定します。テーブルが作成されるスキーマに対して一意である必要があります。

また、識別子はアルファベット文字で始まる必要があり、識別子文字列全体が二重引用符で囲まれていない限り、スペースや特殊文字を含めることはできません(例: "My object")。二重引用符で囲まれた識別子も大文字と小文字が区別されます。

詳細については、 識別子の要件 をご参照ください。

列名

列識別子(名前)を指定します。テーブル識別子のすべての要件は、列識別子にも適用されます。

詳細については、 識別子の要件 および 予約済みおよび限定キーワード をご参照ください。

注釈

標準の予約キーワードに加えて、次のキーワードは ANSI 標準コンテキスト関数用に予約されているため、列識別子として使用できません。

  • CURRENT_DATE

  • CURRENT_ROLE

  • CURRENT_TIME

  • CURRENT_TIMESTAMP

  • CURRENT_USER

予約済みキーワードのリストについては、 予約済みおよび限定キーワード をご参照ください。

列タイプ

列のデータ型を指定します。

テーブル列に指定できるデータ型の詳細については、 データ型 をご参照ください。

オプションのパラメーター

TEMPORARY ... または . TRANSIENT

テーブルが仮か一時的かを指定します。

TEMP[ORARY] | LOCAL TEMP[ORARY] | GLOBAL TEMP[ORARY] | VOLATILE

テーブルが仮であることを指定します。仮テーブルは、作成されたユーザーセッションの間のみ保持され、他のユーザーには表示されません。仮テーブルとそのすべてのコンテンツは、セッションの終了時にドロップされます。

TEMPORARY の同義語と略語は、他のデータベースとの互換性のために提供されています(例えば、 CREATE TABLE ステートメントの移行時のエラーを防ぐため)。これらのキーワードのいずれかで作成されたテーブルは、 TEMPORARY を使用して作成されたテーブルと同じように表示され、動作します。

TRANSIENT

テーブルが一時的であることを指定します。仮テーブルとは対照的に、一時テーブルは明示的にドロップされるまで存在し、適切な権限を持つすべてのユーザーに表示されます。ただし、一時テーブルは永続テーブルよりもデータ保護のレベルが低いため、システム障害が発生すると一時テーブルのデータが失われる可能性があります。そのため、一時テーブルは、Snowflakeの外部で再作成できるデータにのみ使用する必要があります。

値が指定されていない場合、テーブルは永続的です。

デフォルト:値なし(つまり、テーブルは永続的)

注釈

仮テーブルには、同じスキーマ内に同じ名前を持つ他のテーブルで発生する可能性のある名前の競合に関して、使用上の考慮事項がいくつかあります。さらに、仮テーブルと一時テーブルの両方にストレージに関する考慮事項があります。

仮テーブルを作成するか一時テーブルを作成するかを決定する際のこれらおよびその他の考慮事項の詳細については、 仮テーブルと一時テーブルの使用 および Time TravelおよびFail-safeのストレージコスト をご参照ください。

'照合仕様'

文字列比較などの列操作に使用する照合を指定します。このオプションはテキスト列(VARCHAR、 STRING、 TEXTなど)にのみ適用されます。詳細については、 照合仕様 をご参照ください。

DEFAULT ... または . AUTOINCREMENT ...

INSERT または CREATE TABLE AS SELECT ステートメントで値が明示的に指定されていない場合に、デフォルト値を列に自動的に挿入するかどうかを指定します。

DEFAULT

列のデフォルト値は、次のいずれかの指定可能な式によって定義されます。

  • 定数値。

  • 単純式

  • シーケンス参照(シーケンス名.NEXTVAL)。

単純式とは、スカラー値を返す式です。ただし、式に次の参照を含めることは できません

  • サブクエリ。

  • 集計。

  • ウィンドウ関数。

  • 外部関数。

デフォルトの式が SQL ユーザー定義関数(UDF)を参照している場合、関数はテーブル作成時にその定義に置き換えられます。ユーザー定義関数が将来再定義される場合は、列のデフォルト式に影響を与えません。

JavaScript UDFs やセキュア SQL UDFs などの他のタイプの UDFs は、列のデフォルト式では参照できません。

AUTOINCREMENT | IDENTITY [ ( 開始数値 , ステップ数値 ) | START 数値 INCREMENT 数値 ]

AUTOINCREMENT が使用されている場合、列のデフォルト値は指定された数値で始まり、連続する各値は指定された量だけ自動的に増加します。これらのパラメーターは、数値データ型の列にのみ使用できます。

AUTOINCREMENTIDENTITY は同義語です。列にいずれかが指定されている場合、Snowflakeはシーケンスを使用して列の値を生成します。シーケンスの詳細については、 シーケンスの使用 をご参照ください。

開始とステップ/増分の両方のデフォルト値は 1 です。

デフォルト:値なし(列にデフォルト値なし)

注釈

DEFAULTAUTOINCREMENT は、相互に排他的です。列には1つしか指定できません。

CONSTRAINT ...

テーブル内の指定された列のインラインまたはアウトライン制約を定義します。

構文の詳細については、 CREATE | ALTER TABLE ... CONSTRAINT をご参照ください。制約の詳細については、 制約 をご参照ください。

CLUSTER BY ( [ , , ... ] )

テーブル内の1つ以上の列または列式をクラスタリングキーとして指定します。詳細については、 クラスタリングキーとクラスタ化されたテーブル をご参照ください。

デフォルト:値なし(テーブルにクラスタリングキーが定義されていない)

重要

クラスタリングキーは、すべてのテーブルに対して意図または推奨されて いません 。通常、非常に大きな(つまり、マルチテラバイト)テーブルに役立ちます。

テーブルのクラスタリングキーを指定する前に、 Snowflakeテーブル構造について をお読みください。

STAGE_FILE_FORMAT = ( FORMAT_NAME = 'ファイル形式名' ) または . STAGE_FILE_FORMAT = ( TYPE = CSV | JSON | AVRO | ORC | PARQUET | XML [ ... ] )

テーブルのファイル形式を指定します(データのロードおよびアンロード用)。次のいずれかになります:

FORMAT_NAME = ファイル形式名

テーブルへのデータのロード/アンロードに使用する既存の名前付きファイル形式を指定します。名前付きファイル形式は、データファイルの形式タイプ(CSV、 JSONなど)およびその他の形式オプションを決定します。詳細については、 CREATE FILE FORMAT をご参照ください。

TYPE = CSV | JSON | AVRO | ORC | PARQUET | XML [ ... ]

テーブルにロード/アンロードするファイルのタイプを指定します。

ファイル形式タイプが指定されている場合は、追加の形式固有のオプションを指定できます。詳細については、 形式タイプオプション (このトピック)をご参照ください。

デフォルト: TYPE = CSV

注釈

FORMAT_NAMETYPE は相互に排他的です。意図しない動作を避けるために、テーブルを作成するときはどちらか一方のみを指定する必要があります。

STAGE_COPY_OPTIONS = ( ... )

テーブルにデータをロードするときに使用する1つ(または複数)のオプションを指定します。詳細については、 コピーオプション (このトピック)をご参照ください。

DATA_RETENTION_TIME_IN_DAYS = 数値

テーブルの履歴データに対してTime Travelアクション(SELECT、 CLONE、 UNDROP)を実行できるように、テーブルの保持期間を指定します。詳細については、 Time Travelの理解と使用 および 仮テーブルと一時テーブルの使用 をご参照ください。

このオブジェクトレベルパラメーターの詳細な説明、およびオブジェクトパラメーターの詳細については、 パラメーター をご参照ください。

値:

  • Standard Edition: 0 または 1

  • Enterprise Edition:

    • 永続テーブルの場合は 090

    • 仮テーブルと一時テーブルの場合は 0 または 1

デフォルト:

  • Standard Edition: 1

  • Enterprise Edition(またはそれ以上): 1 (スキーマ、データベースまたはアカウントレベルで別のデフォルト値が指定されていない場合)

注釈

0 の値は、テーブルのTime Travelを効果的に無効化します。

CHANGE_TRACKING = TRUE | FALSE

テーブルで変更追跡を有効にするかどうかを指定します。

  • TRUE テーブルの変更追跡を有効にします。この設定により、非表示の列のペアがソーステーブルに追加され、変更追跡メタデータの列への保存が開始されます。これらの列は少量のストレージを消費します。

    変更追跡メタデータのクエリには、 SELECT ステートメントの CHANGES 句を使用するか、テーブルで1つ以上のストリームを作成し、クエリします。

  • FALSE は、テーブルの変更追跡を有効にしません。

デフォルト: FALSE

DEFAULT_DDL_COLLATION = '照合仕様'

将来テーブルに追加される列を含む、テーブルの列のデフォルトの 照合仕様 を指定します。

パラメーターの詳細については、 DEFAULT_DDL_COLLATION をご参照ください。

COPY GRANTS

次の CREATE TABLE バリアントのいずれかを使用して新しいテーブルが作成されるときに、元のテーブルからのアクセス権を保持することを指定します。

  • CREATE OR REPLACE TABLE

  • CREATE TABLE ... LIKE

  • CREATE TABLE ... CLONE

このパラメーターは、既存のテーブルから新しいテーブルにすべての権限( OWNERSHIP 以外)をコピーします。新しいテーブルは、スキーマ内のオブジェクトタイプに定義された将来の許可を継承 しません 。デフォルトでは、 CREATE TABLE ステートメントを実行するロールが新しいテーブルを所有します。

パラメーターが CREATE TABLE ステートメントに含まれていない場合、新しいテーブルは元のテーブルに付与された明示的なアクセス権限を 継承しません が、スキーマ内のオブジェクトタイプに定義された将来の権限を継承します。

ノート:

  • CREATE TABLE ステートメントが複数のテーブル(例: create or replace table TABLE1 clone TABLE2;)を参照している場合、 COPY GRANTS 句は 置換されるテーブル (この例では TABLE1)から許可をコピーします。

  • データ共有 の場合、

    • 既存のテーブルが別のアカウントと共有されていた場合、置換テーブルも共有されます。

    • 既存のテーブルがデータコンシューマとしてアカウントと共有され、アクセスがアカウント内の他のロールにさらに許可された場合(親データベースの GRANT IMPORTED PRIVILEGES を使用)、置換テーブルにもアクセスが許可されます。

  • 置換テーブルの SHOW GRANTS 出力には、コピーされた権限の被付与者が、ステートメントが実行されたときの現在のタイムスタンプとともに、 CREATE TABLE ステートメントを実行したロールとしてリストされます。

  • 許可をコピーする操作は、 CREATE TABLE コマンドで(つまり、同じトランザクション内で)アトミックに発生します。

COMMENT = '文字列リテラル'

テーブルのコメントを指定します。

デフォルト:値なし

形式タイプオプション(formatTypeOptions

形式タイプオプションは、 テーブルへのデータのロードテーブルからのデータのアンロード に使用されます。

指定したファイル形式タイプ(STAGE_FILE_FORMAT = ( TYPE = ... ))に応じて、次の形式固有のオプションを1つ以上含めることができます(空白、コンマ、または改行で区切られます)。

TYPE = CSV

COMPRESSION = AUTO | GZIP | BZ2 | BROTLI | ZSTD | DEFLATE | RAW_DEFLATE | NONE
使用

データのロードとアンロード

定義
  • データをロードするときに、データファイルの現在の圧縮アルゴリズムを指定します。Snowflakeはこのオプションを使用して、ファイル内の圧縮データをロード用に抽出できるように、 圧縮済み データファイルの圧縮方法を検出します。

  • データをアンロードする際、指定された圧縮アルゴリズムを使用してデータファイルを圧縮します。

サポートされる値

メモ

AUTO

データをロードすると、圧縮アルゴリズムは自動的に検出されますが、Brotliで圧縮されたファイルは例外で、現在は自動検出できません。データをアンロードするとき、ファイルはデフォルトのgzipを使用して自動的に圧縮されます。

GZIP

BZ2

BROTLI

Brotli圧縮ファイルをロード/アンロードする場合、指定する必要があります。

ZSTD

Zstandard v0.8(およびそれ以上)がサポートされています。

DEFLATE

Deflate圧縮されたファイル(zlibヘッダー、 RFC1950を使用)。

RAW_DEFLATE

生Deflate圧縮ファイル(ヘッダーなし、 RFC1951)。

NONE

データをロードするとき、ファイルが圧縮されていないことを示します。データをアンロードするとき、アンロードされたファイルが圧縮されないことを指定します。

デフォルト

AUTO

RECORD_DELIMITER = '文字' | NONE
使用

データのロードとアンロード

定義

入力ファイル(データのロード)またはアンロードされたファイル(データのアンロード)のレコードを分離する1つ以上のシングルバイトまたはマルチバイト文字。

一般的なエスケープシーケンス、8進値( \\ で始まる)、または16進値( 0x で始まる)を受け入れます。たとえば、ソーン(Þ)文字で区切られたレコードの場合、8進数(\\336)または16進数(0xDE)の値を指定します。 NONE の値も受け入れます。

指定された区切り文字は、ランダムなバイトのシーケンスではなく、有効な UTF-8文字でなければなりません。

複数文字の区切り文字もサポートされています。ただし、 RECORD_DELIMITER または FIELD_DELIMITER の区切り文字は、他のファイル形式オプション( FIELD_DELIMITER = 'aa' RECORD_DELIMITER = 'aabb' など)の区切り文字の部分文字列にはできません。区切り文字は最大20文字に制限されています。 ESCAPE または ESCAPE_UNENCLOSED_FIELD などの他のファイル形式オプションに使用される文字を指定しないでください。

デフォルト
データのロード

改行文字。「改行」は論理的であるため、 \r\n がWindowsプラットフォーム上のファイルの改行として理解されることに注意してください。

データのアンロード

改行文字(\n)。

FIELD_DELIMITER = '文字' | NONE
使用

データのロードとアンロード

定義

入力ファイル(データのロード)またはアンロードされたファイル(データのアンロード)のフィールドを区切る1つ以上のシングルバイトまたはマルチバイト文字。

一般的なエスケープシーケンス、8進値( \\ で始まる)、または16進値( 0x で始まる)を受け入れます。たとえば、ソーン(Þ)文字で区切られたフィールドの場合、8進数(\\336)または16進数(0xDE)の値を指定します。 NONE の値も受け入れます。

指定された区切り文字は、ランダムなバイトのシーケンスではなく、有効な UTF-8文字でなければなりません。

複数文字の区切り文字もサポートされています。ただし、 RECORD_DELIMITER または FIELD_DELIMITER の区切り文字は、他のファイル形式オプション( FIELD_DELIMITER = 'aa' RECORD_DELIMITER = 'aabb' など)の区切り文字の部分文字列にはできません。区切り文字は最大20文字に制限されています。 ESCAPE または ESCAPE_UNENCLOSED_FIELD などの他のファイル形式オプションに使用される文字を指定しないでください。

デフォルト

コンマ(,

FILE_EXTENSION = '文字列' | NONE
使用

データのアンロードのみ

定義

ステージにアンロードされるファイルの拡張子を指定します。拡張子を受け入れます。目的のソフトウェアまたはサービスが読み取れるファイル拡張子を指定することは、ユーザーの責任です。

デフォルト

null、つまり、ファイル拡張子は形式タイプ、 .csv[圧縮] によって決定されます。 圧縮 は、 COMPRESSION が設定されている場合、圧縮方法によって追加された拡張子です。

注釈

SINGLE コピーオプションが TRUE の場合、 COPY コマンドはデフォルトでファイル拡張子のないファイルをアンロードします。ファイル拡張子を指定するには、 内部ロケーション または 外部ロケーション パス(例: copy into @stage/data.csv)でファイル名と拡張子を指定します。

SKIP_HEADER = 整数
使用

データのロードのみ

定義

スキップするファイルの先頭の行数。

SKIP_HEADER は RECORD_DELIMITER または FIELD_DELIMITER の値を使用してヘッダー行を決定しないことに注意してください。むしろ、指定された数の CRLF (キャリッジリターン、ラインフィード)で区切られたファイル内の行を単にスキップします。ロードするデータの行を決定するのには、RECORD_DELIMITER および FIELD_DELIMITER が使用されます。

デフォルト

0

SKIP_BLANK_LINES = TRUE | FALSE
使用

データのロードのみ

定義

データファイルで検出された空白行をスキップすることを指定するブール値。それ以外の場合は、空白行はレコード終了エラーを生成します(デフォルトの動作)。

デフォルト: FALSE

DATE_FORMAT = '文字列' | AUTO
使用

データのロードとアンロード

定義

データファイル(データのロード)またはテーブル(データのアンロード)の日付値の形式を定義します。値が指定されていない、または AUTO の場合、 DATE_INPUT_FORMAT (データのロード)または DATE_OUTPUT_FORMAT (データのアンロード)パラメーターの値が使用されます。

デフォルト

AUTO

TIME_FORMAT = '文字列' | AUTO
使用

データのロードとアンロード

定義

データファイル(データのロード)またはテーブル(データのアンロード)の時間値の形式を定義します。値が指定されていない、または AUTO の場合、 TIME_INPUT_FORMAT (データのロード)または TIME_OUTPUT_FORMAT (データのアンロード)パラメーターの値が使用されます。

デフォルト

AUTO

TIMESTAMP_FORMAT = 文字列' | AUTO
使用

データのロードとアンロード

定義

データファイル(データのロード)またはテーブル(データのアンロード)のタイムスタンプ値の形式を定義します。値が指定されていない、または AUTO の場合、 TIMESTAMP_INPUT_FORMAT (データのロード)または TIMESTAMP_OUTPUT_FORMAT (データのアンロード)パラメーターの値が使用されます。

デフォルト

AUTO

BINARY_FORMAT = HEX | BASE64 | UTF8
使用

データのロードとアンロード

定義

バイナリ入力または出力のエンコード形式を定義します。このオプションは、テーブルのバイナリ列にデータをロードまたはアンロードするときに使用できます。

デフォルト

HEX

ESCAPE = '文字' | NONE
使用

データのロードとアンロード

定義

フィールド値のエスケープ文字として使用される1文字の文字列。エスケープ文字は、文字シーケンス内の後続の文字に対して代替解釈を呼び出します。ESCAPE 文字を使用して、データ内の FIELD_DELIMITERRECORD_DELIMITER、または FIELD_OPTIONALLY_ENCLOSED_BY 文字のインスタンスをリテラルとして解釈できます。エスケープ文字は、データ内のそれ自体のインスタンスをエスケープするためにも使用できます。

一般的なエスケープシーケンス、8進数値、または16進数値を受け入れます。

  • データをロードする際、囲まれたフィールドのエスケープ文字を指定します。 FIELD_OPTIONALLY_ENCLOSED_BY を設定して、フィールドを囲むのに使用する文字を指定します。

  • データをアンロードする際に、このオプションが設定されている場合は、 ESCAPE_UNENCLOSED_FIELD のエスケープ文字セットが上書きされます。

デフォルト

NONE

ESCAPE_UNENCLOSED_FIELD = '文字' | NONE
使用

データのロードとアンロード

定義

囲まれていないフィールド値専用のエスケープ文字として使用される単一の文字列。エスケープ文字は、文字シーケンス内の後続の文字に対して代替解釈を呼び出します。ESCAPE 文字を使用して、データ内の FIELD_DELIMITER または RECORD_DELIMITER 文字のインスタンスをリテラルとして解釈できます。エスケープ文字は、データ内のそれ自体のインスタンスをエスケープするためにも使用できます。

一般的なエスケープシーケンス、8進数値、または16進数値を受け入れます。

データをアンロードする際に、 ESCAPE が設定されている場合は、そのファイルオプションのエスケープ文字セットがこのオプションを上書きします。

デフォルト

バックスラッシュ(\\

TRIM_SPACE = TRUE | FALSE
使用

データのロードのみ

定義

フィールドから空白を削除するかどうかを指定するブール値。

たとえば、外部データベースソフトウェアがフィールドを引用符で囲み、先頭にスペースを挿入する場合、Snowflakeはフィールドの先頭として開始引用文字ではなく先頭スペースを読み取ります(つまり、引用符はフィールドデータの文字列の一部として解釈されます)。このオプションを TRUE に設定すると、データのロード中に不要なスペースが削除されます。

別の例として、先頭または後続のスペースが文字列を囲む引用符の前後にある場合、このオプションを使用して周囲のスペースを削除し、 FIELD_OPTIONALLY_ENCLOSED_BY オプションを使用して引用文字を削除できます。引用符 のスペースは保持されることに注意してください。例えば、 FIELD_DELIMITER = '|'FIELD_OPTIONALLY_ENCLOSED_BY = '"' を想定した場合:

|"Hello world"|    /* loads as */  >Hello world<
|" Hello world "|  /* loads as */  > Hello world <
| "Hello world" |  /* loads as */  >Hello world<

(この例のブラケットはロードされておらず、ロードされた文字列の開始と終了を区別するために使用されます)

デフォルト

FALSE

FIELD_OPTIONALLY_ENCLOSED_BY = '文字' | NONE
使用

データのロードとアンロード

定義

文字列を囲むのに使用される文字。値は、 NONE、一重引用符(')、または二重引用符(")のいずれかです。一重引用符を使用するには、8進数または16進数表現(0x27)または二重引用符で囲まれたエスケープ('')を使用します。

フィールドにこの文字が含まれる場合、同じ文字を使用してエスケープします。例えば、値が二重引用符であり、フィールドに文字列 A "B" C が含まれる場合、二重引用符を次のようにエスケープします。

A ""B"" C

デフォルト

NONE

NULL_IF = ( '文字列1' [ , '文字列2' , ... ] )
使用

データのロードとアンロード

定義

SQL NULLとの間の変換に使用される文字列。

  • データをロードする際、Snowflakeはデータロードソースのこれらの文字列を SQL NULLに置き換えます。複数の文字列を指定するには、文字列のリストを括弧で囲み、各値をコンマで区切ります。

    例:

    NULL_IF = ('\\N', 'NULL', 'NUL', '')

    このオプションには空の文字列を含めることができます。

  • データをアンロードする際、Snowflakeは SQL NULL 値をリストの最初の値に変換します。

デフォルト

\\N (つまり、 NULL、 ESCAPE_UNENCLOSED_FIELD 値が \\ であると想定)

ERROR_ON_COLUMN_COUNT_MISMATCH = TRUE | FALSE
使用

データのロードのみ

定義

入力ファイルの区切り列(フィールド)の数が対応するテーブルの列の数と一致しない場合に、解析エラーを生成するかどうかを指定するブール値。

FALSE に設定すると、エラーは生成されず、ロードが続行されます。ファイルが正常にロードされた場合:

  • 入力ファイルに、テーブル内の列よりもフィールド数が多いレコードが含まれている場合、一致するフィールドはファイル内の出現順にロードされ、残りのフィールドはロードされません。

  • 入力ファイルにテーブル内の列よりもフィールド数が少ないレコードが含まれている場合、テーブル内の一致しない列は NULL 値でロードされます。

このオプションは、入力ファイル内のすべてのレコードが同じ長さであることを前提としています(つまり、可変長のレコードを含むファイルは、このパラメーターに指定された値に関係なくエラーを返します)。

デフォルト

TRUE

注釈

ロード中にデータを変換する (つまり、 COPY コマンドのソースとしてクエリを使用する)場合、このオプションは無視されます。データファイルは、ターゲットテーブルと同数および同順序の列である必要はありません。

REPLACE_INVALID_CHARACTERS = TRUE | FALSE
使用

データのロードのみ

定義

無効な UTF -8文字をUnicode置換文字()で置き換えるかどうかを指定するブール値。

TRUE に設定すると、Snowflakeは無効な UTF -8文字をUnicode置換文字に置き換えます。

FALSE に設定すると、無効な UTF -8文字エンコードが検出されたときにロード操作でエラーが生成されます。

デフォルト

FALSE

VALIDATE_UTF8 = TRUE | FALSE
使用

データのロードのみ

定義

文字列列データの UTF-8文字エンコードを検証するかどうかを指定するブール値。

TRUE に設定すると、Snowflakeは文字列の列データの UTF-8文字エンコードを検証します。無効な UTF-8文字エンコードが検出されると、 COPY コマンドはエラーを生成します。

デフォルト

TRUE

重要

このオプションは、Snowflakeの以前のバージョンとの後方互換性を確保するためにのみ提供されています。Snowflakeサポートの指示がない限り、このオプションを 無効にしない でください。

EMPTY_FIELD_AS_NULL = TRUE | FALSE
使用

データのロードとアンロード

定義
  • データをロードするとき、2つの連続する区切り文字(例:,,)で表される入力ファイルの空のフィールドに、 SQL NULL を挿入するかどうかを指定します。

    FALSE に設定すると、Snowflakeは空のフィールドを対応する列タイプにキャストしようとします。タイプ STRINGの列に空の文字列が挿入されます。他の列タイプの場合、 COPY コマンドはエラーを生成します。

  • データをアンロードするとき、このオプションは FIELD_OPTIONALLY_ENCLOSED_BY と組み合わせて使用されます。 FIELD_OPTIONALLY_ENCLOSED_BY = NONE の場合、 EMPTY_FIELD_AS_NULL = FALSE を設定すると、テーブル内の空の文字列を、フィールド値を囲む引用符なしで空の文字列値にアンロードするように指定されます。

    TRUE に設定した場合、 FIELD_OPTIONALLY_ENCLOSED_BY は文字列を囲む文字を指定する必要があります。

デフォルト

TRUE

SKIP_BYTE_ORDER_MARK = TRUE | FALSE
使用

データのロードのみ

定義

データファイルに存在する場合、 BOM (バイト順マーク)をスキップするかどうかを指定するブール値。 BOM は、データファイルの先頭にある文字コードで、バイト順とエンコード形式を定義します。

FALSE に設定されている場合、Snowflakeはデータファイル内の BOM を認識し、 BOM がエラーの原因になるか、テーブルの最初の列にマージされる可能性があります。

デフォルト

TRUE

ENCODING = '文字列'
使用

データのロードのみ

定義

データをテーブルにロードする際にソースデータの文字セットを指定する文字列(定数)。

文字 セット

ENCODING 値

サポートされている言語

メモ

Big5

BIG5

中国語(繁体字)

EUC-JP

EUCJP

日本語

EUC-KR

EUCKR

韓国語

GB18030

GB18030

中国語

IBM420

IBM420

アラビア語

IBM424

IBM424

ヘブライ語

ISO-2022-CN

ISO2022CN

中国語(簡体字)

ISO-2022-JP

ISO2022JP

日本語

ISO-2022-KR

ISO2022KR

韓国語

ISO-8859-1

ISO88591

デンマーク語、オランダ語、英語、フランス語、ドイツ語、イタリア語、ノルウェー語、ポルトガル語、スウェーデン語

ISO-8859-2

ISO88592

チェコ語、ハンガリー語、ポーランド語、ルーマニア語

ISO-8859-5

ISO88595

ロシア語

ISO-8859-6

ISO88596

アラビア語

ISO-8859-7

ISO88597

ギリシャ語

ISO-8859-8

ISO88598

ヘブライ語

ISO-8859-9

ISO88599

トルコ語

KOI8-R

KOI8R

ロシア語

Shift_JIS

SHIFTJIS

日本語

UTF-8

UTF8

すべての言語

区切りファイル(CSV、 TSVなど)からデータをロードする場合、 UTF-8がデフォルトです。 . . サポートされている他のすべてのファイル形式(JSON、Avroなど)からデータをロードおよびアンロードする場合、サポートされる文字セットは UTF-8のみです。

UTF-16

UTF16

すべての言語

UTF-16BE

UTF16BE

すべての言語

UTF-16LE

UTF16LE

すべての言語

UTF-32

UTF32

すべての言語

UTF-32BE

UTF32BE

すべての言語

UTF-32LE

UTF32LE

すべての言語

windows-1250

WINDOWS1250

チェコ語、ハンガリー語、ポーランド語、ルーマニア語

windows-1251

WINDOWS1251

ロシア語

windows-1252

WINDOWS1252

デンマーク語、オランダ語、英語、フランス語、ドイツ語、イタリア語、ノルウェー語、ポルトガル語、スウェーデン語

windows-1253

WINDOWS1253

ギリシャ語

windows-1254

WINDOWS1254

トルコ語

windows-1255

WINDOWS1255

ヘブライ語

windows-1256

WINDOWS1256

アラビア語

デフォルト

UTF8

注釈

Snowflakeは、すべてのデータを UTF-8文字セットで内部に保存します。データは、Snowflakeにロードされる前に UTF-8に変換されます。 VALIDATE_UTF8 ファイル形式オプションが TRUE の場合、Snowflakeは、元の文字エンコードから変換された の文字列の列データの UTF-8文字エンコードを検証します。

TYPE = JSON

COMPRESSION = AUTO | GZIP | BZ2 | BROTLI | ZSTD | DEFLATE | RAW_DEFLATE | NONE
使用

データのロードとアンロード

定義
  • データをロードするときに、データファイルの現在の圧縮アルゴリズムを指定します。Snowflakeはこのオプションを使用して、ファイル内の圧縮データをロード用に抽出できるように、 圧縮済み データファイルの圧縮方法を検出します。

  • データをアンロードする際、指定された圧縮アルゴリズムを使用してデータファイルを圧縮します。

サポートされる値

メモ

AUTO

データをロードすると、圧縮アルゴリズムは自動的に検出されますが、Brotliで圧縮されたファイルは例外で、現在は自動検出できません。データをアンロードするとき、ファイルはデフォルトのgzipを使用して自動的に圧縮されます。

GZIP

BZ2

BROTLI

Brotli圧縮ファイルをロード/アンロードする場合、指定する必要があります。

ZSTD

Zstandard v0.8(およびそれ以上)がサポートされています。

DEFLATE

Deflate圧縮されたファイル(zlibヘッダー、 RFC1950を使用)。

RAW_DEFLATE

生Deflate圧縮ファイル(ヘッダーなし、 RFC1951)。

NONE

データをロードするとき、ファイルが圧縮されていないことを示します。データをアンロードするとき、アンロードされたファイルが圧縮されないことを指定します。

デフォルト

AUTO

DATE_FORMAT = '文字列' | AUTO
使用

データのロードのみ

定義

JSON データを個別の列にロードするときにのみ適用されます(つまり、 MATCH_BY_COLUMN_NAME コピーオプションまたは COPY 変換を使用)。 データファイルの日付文字列値の形式を定義します。値が指定されていない場合、または AUTO の場合、 DATE_INPUT_FORMAT パラメーターの値が使用されます。

現在、このファイル形式オプションは プレビュー機能 です。

デフォルト

AUTO

TIME_FORMAT = '文字列' | AUTO
使用

データのロードのみ

定義

JSON データを個別の列にロードするときにのみ適用されます(つまり、 MATCH_BY_COLUMN_NAME コピーオプションまたは COPY 変換を使用)。 データファイルの時刻文字列値の形式を定義します。値が指定されていない場合、または AUTO の場合、 TIME_INPUT_FORMAT パラメーターの値が使用されます。

現在、このファイル形式オプションは プレビュー機能 です。

デフォルト

AUTO

TIMESTAMP_FORMAT = 文字列' | AUTO
使用

データのロードのみ

定義

JSON データを個別の列にロードするときにのみ適用されます(つまり、 MATCH_BY_COLUMN_NAME コピーオプションまたは COPY 変換を使用)。 データファイルのタイムスタンプ文字列値の形式を定義します。値が指定されていない場合、または AUTO の場合、 TIMESTAMP_INPUT_FORMAT パラメーターの値が使用されます。

現在、このファイル形式オプションは プレビュー機能 です。

デフォルト

AUTO

BINARY_FORMAT = HEX | BASE64 | UTF8
使用

データのロードのみ

定義

JSON データを個別の列にロードするときにのみ適用されます(つまり、 MATCH_BY_COLUMN_NAME コピーオプションまたは COPY 変換を使用)。 データファイルのバイナリ文字列値のエンコード形式を定義します。このオプションは、テーブルのバイナリ列にデータをロードするときに使用できます。

現在、このファイル形式オプションは プレビュー機能 です。

デフォルト

HEX

TRIM_SPACE = TRUE | FALSE
使用

データのロードのみ

定義

JSON データを個別の列にロードするときにのみ適用されます(つまり、 MATCH_BY_COLUMN_NAME コピーオプションまたは COPY 変換を使用)。 文字列から先頭および末尾の空白を削除するかどうかを指定するブール値です。

たとえば、外部データベースソフトウェアがフィールドを引用符で囲み、先頭にスペースを挿入する場合、Snowflakeはフィールドの先頭として開始引用文字ではなく先頭スペースを読み取ります(つまり、引用符はフィールドデータの文字列の一部として解釈されます)。このオプションを TRUE に設定すると、データのロード中に不要なスペースが削除されます。

現在、このファイル形式オプションは プレビュー機能 です。

デフォルト

FALSE

NULL_IF = ( '文字列1' [ , '文字列2' , ... ] )
使用

データのロードのみ

定義

JSON データを個別の列にロードするときにのみ適用されます(つまり、 MATCH_BY_COLUMN_NAME コピーオプションまたは COPY 変換を使用)。 SQL NULLとの間の変換に使用される文字列です。Snowflakeはデータロードソースのこれらの文字列を SQL NULLに置き換えます。複数の文字列を指定するには、文字列のリストを括弧で囲み、各値をコンマで区切ります。

例:

NULL_IF = ('\\N', 'NULL', 'NUL', '')

このオプションには空の文字列を含めることができます。

現在、このファイル形式オプションは プレビュー機能 です。

デフォルト

\\N (つまり、 NULL、 ESCAPE_UNENCLOSED_FIELD 値が \\ であると想定)

FILE_EXTENSION = '文字列' | NONE
使用

データのアンロードのみ

定義

ステージにアンロードされるファイルの拡張子を指定します。拡張子を受け入れます。目的のソフトウェアまたはサービスが読み取れるファイル拡張子を指定することは、ユーザーの責任です。

デフォルト

null。つまり、ファイル拡張子は形式タイプ: .json[圧縮] によって決定されます。 圧縮 は、 COMPRESSION が設定されている場合、圧縮方法によって追加された拡張子です。

ENABLE_OCTAL = TRUE | FALSE
使用

データのロードのみ

定義

8進数の解析を可能にするブール値。

デフォルト

FALSE

ALLOW_DUPLICATE = TRUE | FALSE
使用

データのロードのみ

定義

オブジェクトフィールド名の重複を許可することを指定するブール値(最後のフィールドのみが保持されます)。

デフォルト

FALSE

STRIP_OUTER_ARRAY = TRUE | FALSE
使用

データのロードのみ

定義

JSON パーサーに外側の括弧(つまり [ ])を削除するよう指示するブール値。

デフォルト

FALSE

STRIP_NULL_VALUES = TRUE | FALSE
使用

データのロードのみ

定義

null 値を含むオブジェクトフィールドまたは配列要素を削除するように JSON パーサーに指示するブール値。たとえば、 TRUE に設定されている場合:

[null]

[]

[null,null,3]

[,,3]

{"a":null,"b":null,"c":123}

{"c":123}

{"a":[1,null,2],"b":{"x":null,"y":88}}

{"a":[1,,2],"b":{"y":88}}

デフォルト

FALSE

IGNORE_UTF8_ERRORS = TRUE | FALSE
使用

データのロードのみ

定義

UTF-8エンコードエラーがエラー状態を引き起こすかどうかを指定するブール値。 TRUE に設定すると、無効な UTF-8シーケンスはUnicode文字 U+FFFD (「置換文字」)で警告なしに置き換えられます。

デフォルト

FALSE

SKIP_BYTE_ORDER_MARK = TRUE | FALSE
使用

データのロードのみ

定義

データファイルに存在する場合、 BOM (バイト順マーク)をスキップするかどうかを指定するブール値。 BOM は、データファイルの先頭にある文字コードで、バイト順とエンコード形式を定義します。

FALSE に設定されている場合、Snowflakeはデータファイル内の BOM を認識し、 BOM がエラーの原因になるか、テーブルの最初の列にマージされる可能性があります。

デフォルト

TRUE

TYPE = AVRO

COMPRESSION = AUTO | GZIP | BZ2 | BROTLI | ZSTD | DEFLATE | RAW_DEFLATE | NONE
使用

データのロードとアンロード

定義
  • データをロードするときに、データファイルの現在の圧縮アルゴリズムを指定します。Snowflakeはこのオプションを使用して、ファイル内の圧縮データをロード用に抽出できるように、 圧縮済み データファイルの圧縮方法を検出します。

  • データをアンロードする際、指定された圧縮アルゴリズムを使用してデータファイルを圧縮します。

サポートされる値

メモ

AUTO

データをロードすると、圧縮アルゴリズムは自動的に検出されますが、Brotliで圧縮されたファイルは例外で、現在は自動検出できません。データをアンロードするとき、ファイルはデフォルトのgzipを使用して自動的に圧縮されます。

GZIP

BZ2

BROTLI

Brotli圧縮ファイルをロード/アンロードする場合、指定する必要があります。

ZSTD

Zstandard v0.8(およびそれ以上)がサポートされています。

DEFLATE

Deflate圧縮されたファイル(zlibヘッダー、 RFC1950を使用)。

RAW_DEFLATE

生Deflate圧縮ファイル(ヘッダーなし、 RFC1951)。

NONE

データをロードするとき、ファイルが圧縮されていないことを示します。データをアンロードするとき、アンロードされたファイルが圧縮されないことを指定します。

デフォルト

AUTO

TRIM_SPACE = TRUE | FALSE
使用

データのロードのみ

定義

Avroデータを個別の列にロードするときにのみ適用されます(つまり、 MATCH_BY_COLUMN_NAME コピーオプションまたは COPY 変換を使用)。 文字列から先頭および末尾の空白を削除するかどうかを指定するブール値です。

たとえば、外部データベースソフトウェアがフィールドを引用符で囲み、先頭にスペースを挿入する場合、Snowflakeはフィールドの先頭として開始引用文字ではなく先頭スペースを読み取ります(つまり、引用符はフィールドデータの文字列の一部として解釈されます)。このオプションを TRUE に設定すると、データのロード中に不要なスペースが削除されます。

現在、このファイル形式オプションは プレビュー機能 です。

デフォルト

FALSE

NULL_IF = ( '文字列1' [ , '文字列2' , ... ] )
使用

データのロードのみ

定義

Avroデータを個別の列にロードするときにのみ適用されます(つまり、 MATCH_BY_COLUMN_NAME コピーオプションまたは COPY 変換を使用)。 SQL NULLとの間の変換に使用される文字列です。Snowflakeはデータロードソースのこれらの文字列を SQL NULLに置き換えます。複数の文字列を指定するには、文字列のリストを括弧で囲み、各値をコンマで区切ります。

例:

NULL_IF = ('\\N', 'NULL', 'NUL', '')

このオプションには空の文字列を含めることができます。

現在、このファイル形式オプションは プレビュー機能 です。

デフォルト

\\N (つまり、 NULL、 ESCAPE_UNENCLOSED_FIELD 値が \\ であると想定)

TYPE = ORC

TRIM_SPACE = TRUE | FALSE
使用

データのロードのみ

定義

ORC データを個別の列にロードするときにのみ適用されます(つまり、 MATCH_BY_COLUMN_NAME コピーオプションまたは COPY 変換を使用)。 文字列から先頭および末尾の空白を削除するかどうかを指定するブール値です。

たとえば、外部データベースソフトウェアがフィールドを引用符で囲み、先頭にスペースを挿入する場合、Snowflakeはフィールドの先頭として開始引用文字ではなく先頭スペースを読み取ります(つまり、引用符はフィールドデータの文字列の一部として解釈されます)。このオプションを TRUE に設定すると、データのロード中に不要なスペースが削除されます。

現在、このファイル形式オプションは プレビュー機能 です。

デフォルト

FALSE

NULL_IF = ( '文字列1' [ , '文字列2' , ... ] )
使用

データのロードのみ

定義

ORC データを個別の列にロードするときにのみ適用されます(つまり、 MATCH_BY_COLUMN_NAME コピーオプションまたは COPY 変換を使用)。 SQL NULLとの間の変換に使用される文字列です。Snowflakeはデータロードソースのこれらの文字列を SQL NULLに置き換えます。複数の文字列を指定するには、文字列のリストを括弧で囲み、各値をコンマで区切ります。

例:

NULL_IF = ('\\N', 'NULL', 'NUL', '')

このオプションには空の文字列を含めることができます。

現在、このファイル形式オプションは プレビュー機能 です。

デフォルト

\\N (つまり、 NULL、 ESCAPE_UNENCLOSED_FIELD 値が \\ であると想定)

TYPE = PARQUET

COMPRESSION = AUTO | LZO | SNAPPY | NONE
使用

データのロードとアンロード

定義

  • データをロードするときに、Parquetファイルにある列の現在の圧縮アルゴリズムを指定します。

  • データをアンロードする際、指定された圧縮アルゴリズムを使用してデータファイルを圧縮します。

サポートされる値

メモ

AUTO

データをロードするときに、圧縮アルゴリズムが自動的に検出されました。対応する圧縮アルゴリズム:Brotli、gzip、Lempel–Ziv–Oberhumer(LZO)、 LZ4、Snappy、またはZstandard v0.8(およびそれ以上)。 . データをアンロードすると、アンロードされたファイルはデフォルトで Snappy 圧縮アルゴリズムを使用して圧縮されます。

LZO

データをアンロードするとき、ファイルはデフォルトでSnappyアルゴリズムを使用して圧縮されます。LZO 圧縮ファイルにデータをアンロードする場合は、この値を指定します。

SNAPPY

データをアンロードするとき、ファイルはデフォルトでSnappyアルゴリズムを使用して圧縮されます。オプションでこの値を指定できます。

NONE

データをロードするとき、ファイルが圧縮されていないことを示します。データをアンロードするとき、アンロードされたファイルが圧縮されないことを指定します。

デフォルト

AUTO

SNAPPY_COMPRESSION = TRUE | FALSE
使用

データのアンロードのみ

AUTO | アンロードされたファイルは、デフォルトで Snappy 圧縮アルゴリズムを使用して圧縮されます。 SNAPPY | Snappy圧縮ファイルをアンロードする場合に指定できます。 NONE | データをロードするときに、ファイルが圧縮されていないことを示します。データをアンロードするとき、アンロードされたファイルが圧縮されないことを指定します。

定義

アンロードされたファイルが SNAPPY アルゴリズムを使用して圧縮されるかどうかを指定するブール値。

注釈

非推奨。 代わりに COMPRESSION = SNAPPY を使用してください。

制限事項

データのアンロード操作についてのみサポートされています。

デフォルト

TRUE

BINARY_AS_TEXT = TRUE | FALSE
使用

データのロードのみ

定義

論理データ型が定義されていない列を UTF-8テキストとして解釈するかどうかを指定するブール値。 FALSE に設定すると、Snowflakeはこれらの列をバイナリデータとして解釈します。

制限事項

データロード操作についてのみサポートされています。

デフォルト

TRUE

TRIM_SPACE = TRUE | FALSE
使用

データのロードのみ

定義

Parquetデータを個別の列にロードするときにのみ適用されます(つまり、 MATCH_BY_COLUMN_NAME コピーオプションまたは COPY 変換を使用)。 文字列から先頭および末尾の空白を削除するかどうかを指定するブール値です。

たとえば、外部データベースソフトウェアがフィールドを引用符で囲み、先頭にスペースを挿入する場合、Snowflakeはフィールドの先頭として開始引用文字ではなく先頭スペースを読み取ります(つまり、引用符はフィールドデータの文字列の一部として解釈されます)。このオプションを TRUE に設定すると、データのロード中に不要なスペースが削除されます。

現在、このファイル形式オプションは プレビュー機能 です。

デフォルト

FALSE

NULL_IF = ( '文字列1' [ , '文字列2' , ... ] )
使用

データのロードのみ

定義

Parquetデータを個別の列にロードするときにのみ適用されます(つまり、 MATCH_BY_COLUMN_NAME コピーオプションまたは COPY 変換を使用)。 SQL NULLとの間の変換に使用される文字列です。Snowflakeはデータロードソースのこれらの文字列を SQL NULLに置き換えます。複数の文字列を指定するには、文字列のリストを括弧で囲み、各値をコンマで区切ります。

例:

NULL_IF = ('\\N', 'NULL', 'NUL', '')

このオプションには空の文字列を含めることができます。

現在、このファイル形式オプションは プレビュー機能 です。

デフォルト

\\N (つまり、 NULL、 ESCAPE_UNENCLOSED_FIELD 値が \\ であると想定)

TYPE = XML

COMPRESSION = AUTO | GZIP | BZ2 | BROTLI | ZSTD | DEFLATE | RAW_DEFLATE | NONE
使用

データのロードとアンロード

定義
  • データをロードするときに、データファイルの現在の圧縮アルゴリズムを指定します。Snowflakeはこのオプションを使用して、ファイル内の圧縮データをロード用に抽出できるように、 圧縮済み データファイルの圧縮方法を検出します。

  • データをアンロードする際、指定された圧縮アルゴリズムを使用してデータファイルを圧縮します。

サポートされる値

メモ

AUTO

データをロードすると、圧縮アルゴリズムは自動的に検出されますが、Brotliで圧縮されたファイルは例外で、現在は自動検出できません。データをアンロードするとき、ファイルはデフォルトのgzipを使用して自動的に圧縮されます。

GZIP

BZ2

BROTLI

Brotli圧縮ファイルをロード/アンロードする場合、指定する必要があります。

ZSTD

Zstandard v0.8(およびそれ以上)がサポートされています。

DEFLATE

Deflate圧縮されたファイル(zlibヘッダー、 RFC1950を使用)。

RAW_DEFLATE

生Deflate圧縮ファイル(ヘッダーなし、 RFC1951)。

NONE

データをロードするとき、ファイルが圧縮されていないことを示します。データをアンロードするとき、アンロードされたファイルが圧縮されないことを指定します。

デフォルト

AUTO

IGNORE_UTF8_ERRORS = TRUE | FALSE
使用

データのロードのみ

定義

UTF-8エンコードエラーがエラー状態を引き起こすかどうかを指定するブール値。 TRUE に設定すると、無効な UTF-8シーケンスはUnicode文字 U+FFFD (「置換文字」)で警告なしに置き換えられます。

デフォルト

FALSE

PRESERVE_SPACE = TRUE | FALSE
使用

データのロードのみ

定義

XML パーサーが要素コンテンツの先頭と後続のスペースを保持するかどうかを指定するブール値。

デフォルト

FALSE

STRIP_OUTER_ELEMENT = TRUE | FALSE
使用

データのロードのみ

定義

XML パーサーが外側の XML 要素を取り除き、2番目のレベルの要素を個別のドキュメントとして公開するかどうかを指定するブール値。

デフォルト

FALSE

DISABLE_SNOWFLAKE_DATA = TRUE | FALSE
使用

データのロードのみ

定義

XML パーサーがSnowflake半構造化データタグの認識を無効にするかどうかを指定するブール値。

デフォルト

FALSE

DISABLE_AUTO_CONVERT = TRUE | FALSE
使用

データのロードのみ

定義

XML パーサーがテキストからネイティブ表現への数値およびブール値の自動変換を無効にするかどうかを指定するブール値。

デフォルト

FALSE

SKIP_BYTE_ORDER_MARK = TRUE | FALSE
使用

データのロードのみ

定義

入力ファイルに存在する BOM (バイト順マーク)をスキップするかどうかを指定するブール値。 BOM は、データファイルの先頭にある文字コードで、バイト順とエンコード形式を定義します。

FALSE に設定されている場合、Snowflakeはデータファイル内の BOM を認識し、 BOM がエラーの原因になるか、テーブルの最初の列にマージされる可能性があります。

デフォルト

TRUE

TRIM_SPACE = TRUE | FALSE
使用

データのロードのみ

定義

XML データを個別の列にロードするときにのみ適用されます(つまり、 MATCH_BY_COLUMN_NAME コピーオプションまたは COPY 変換を使用)。 文字列から先頭および末尾の空白を削除するかどうかを指定するブール値です。

たとえば、外部データベースソフトウェアがフィールドを引用符で囲み、先頭にスペースを挿入する場合、Snowflakeはフィールドの先頭として開始引用文字ではなく先頭スペースを読み取ります(つまり、引用符はフィールドデータの文字列の一部として解釈されます)。このオプションを TRUE に設定すると、データのロード中に不要なスペースが削除されます。

現在、このファイル形式オプションは プレビュー機能 です。

デフォルト

FALSE

NULL_IF = ( '文字列1' [ , '文字列2' , ... ] )
使用

データのロードのみ

定義

XML データを個別の列にロードするときにのみ適用されます(つまり、 MATCH_BY_COLUMN_NAME コピーオプションまたは COPY 変換を使用)。 SQL NULLとの間の変換に使用される文字列です。Snowflakeはデータロードソースのこれらの文字列を SQL NULLに置き換えます。複数の文字列を指定するには、文字列のリストを括弧で囲み、各値をコンマで区切ります。

例:

NULL_IF = ('\\N', 'NULL', 'NUL', '')

このオプションには空の文字列を含めることができます。

現在、このファイル形式オプションは プレビュー機能 です。

デフォルト

\\N (つまり、 NULL、 ESCAPE_UNENCLOSED_FIELD 値が \\ であると想定)

コピーオプション(copyOptions

コピーオプションは、 テーブルへのデータのロードテーブルからのデータのアンロード に使用されます。

次のコピーオプションを1つ以上指定できます(空白、カンマ、または改行で区切られます):

STAGE_COPY_OPTIONS = ( ... )

ON_ERROR = CONTINUE | SKIP_FILE | SKIP_FILE_数値 | SKIP_FILE_数値% | ABORT_STATEMENT

ファイルからデータロード中にエラーが発生したときに実行するアクションを指定する文字列(定数):

サポートされる値

メモ

CONTINUE

ファイルのロードを続けます。COPY ステートメントは、データファイルごとに発生した最大1つのエラーのエラーメッセージを返します。ROWS_PARSED 列の値と ROWS_LOADED 列の値の差は、検出されたエラーを含む行の数を表します。ただし、これらの各行には複数のエラーが含まれる可能性があります。データファイルのすべてのエラーを表示するには、 VALIDATION_MODE パラメーターを使用するか、 VALIDATE 関数をクエリします。

SKIP_FILE

ファイル内でエラーが発生した場合、ファイルをスキップします。

SKIP_FILE_数値 (例 SKIP_FILE_10

ファイル内のエラーの数が指定された数以上の場合、ファイルをスキップします。

SKIP_FILE_数値% (例 SKIP_FILE_10%

ファイル内のエラーの割合が指定された割合を超えた場合、ファイルをスキップします。

ABORT_STATEMENT

エラーが発生した場合、 COPY ステートメントを中止します。

デフォルト:

COPY を使用した一括ロード

ABORT_STATEMENT

Snowpipe

SKIP_FILE

SIZE_LIMIT = 数値

特定の COPY ステートメントに対してロードされるデータの最大サイズ(バイト単位)を指定する数値(> 0)。しきい値を超えると、 COPY 操作はファイルのロードを中止します。このオプションは、通常、複数の COPY ステートメントを使用してファイルの共通グループをロードするために使用されます。各ステートメントについて、次のステートメントに進む前に、指定された SIZE_LIMIT を超えるまでデータのロードが続行されます。

たとえば、ステージパス内の一連のファイルのサイズがそれぞれ10 MB であるとします。複数の COPY ステートメントが SIZE_LIMIT を 25000000 (25 MB)に設定すると、それぞれが3ファイルをロードします。つまり、 SIZE_LIMIT しきい値を超えると、各 COPY 操作は中断されます。

ロードするファイルがない場合を除き、 SIZE_LIMIT:code: に指定された値に関係なく、少なくとも1つのファイルがロードされることに注意してください。

デフォルト:null(サイズ制限なし)

PURGE = TRUE | FALSE

データが正常にロードされた後、ステージからデータファイルを自動的に削除するかどうかを指定するブール値。

このオプションが TRUE に設定されている場合は、正常にロードされたデータファイルを削除するために最善の努力が払われることに注意してください。パージ操作が何らかの理由で失敗した場合、現在エラーは返されません。ステージングされたファイルを定期的にリストし( LIST を使用)、正常にロードされたファイルがある場合は手動で削除することをお勧めします。

デフォルト: FALSE

RETURN_FAILED_ONLY = TRUE | FALSE

ステートメント結果でロードに失敗したファイルのみを返すかどうかを指定するブール値。

デフォルト: FALSE

MATCH_BY_COLUMN_NAME = CASE_SENSITIVE | CASE_INSENSITIVE | NONE

データで表される対応する列と一致するターゲットテーブルの列に半構造化データをロードするかどうかを指定する文字列。

列が一致するには、次の条件を満たす必要があります。

  • データで表される列は、テーブルの列と まったく同じ名前 である必要があります。コピーオプションは、列名の大文字と小文字を区別します。列の順序は関係ありません。

  • テーブルの列には、データで表される列の値と互換性のあるデータ型が必要です。例えば、文字列、数値、ブール値はすべてバリアント列にロードできます。

次のオプションがサポートされています。

CASE_SENSITIVE | CASE_INSENSITIVE

データで表される対応する列に一致するターゲットテーブルの列に半構造化データをロードします。列名は、大文字と小文字が区別される(CASE_SENSITIVE)または大文字と小文字が区別されない(CASE_INSENSITIVE)です。

COPY 操作は、ターゲットテーブルの少なくとも1つの列がデータファイルで表される列と一致することを確認します。一致が見つかった場合、データファイルの値が1つまたは複数の列にロードされます。一致が見つからない場合、ファイル内の各レコードの NULL 値のセットがテーブルにロードされます。

注釈

  • 一致しない追加の列がデータファイルに存在する場合、これらの列の値はロードされません。

  • 一致しない追加の列がターゲットテーブルに存在する場合、 COPY 操作はこれらの列に NULL 値を挿入します。これらの列は NULL 値をサポートする必要があります。

  • COPY ステートメントでは、ロード中にデータをさらに変換するクエリを指定できません(つまり、 COPY 変換)。

NONE

COPY 操作は、半構造化データをバリアント列にロードするか、クエリが COPY ステートメントに含まれている場合、データを変換します。

デフォルト

NONE

注釈

現在、次の制限が適用されます。

  • ターゲットテーブルにロードするのではなく、ステージングされたデータを検証するために、 MATCH_BY_COLUMN_NAME を COPY ステートメントで VALIDATION_MODE パラメーターと共に使用することはできません。

  • Parquetデータのみ。 MATCH_BY_COLUMN_NAME が CASE_SENSITIVE または CASE_INSENSITIVE に設定されている場合、空の列値(例: "col1": "")はエラーを生成します。

ENFORCE_LENGTH = TRUE | FALSE

リバースロジックを使用した TRUNCATECOLUMNS の代替構文(他のシステムとの互換性のため)

ターゲット列の長さを超えるテキスト文字列を切り捨てるかどうかを指定するブール値。

  • TRUE の場合、ロードされた文字列がターゲット列の長さを超えると、 COPY ステートメントはエラーを生成します。

  • FALSE の場合、文字列はターゲット列の長さに自動的に切り捨てられます。

現在、このコピーオプションは CSV データのみをサポートしています。

デフォルト: TRUE

注釈

  • ターゲット文字列の列の長さが最大に設定されている場合(例: VARCHAR (16777216))、着信文字列はこの長さを超えることはできません。そうでない場合、 COPY コマンドはエラーを生成します。

  • このパラメーターは機能的には TRUNCATECOLUMNS と同等ですが、逆の動作をします。他のデータベースとの互換性のために提供されています。必要な出力を生成するには、 COPY ステートメントにこれら2つのパラメーターのいずれかを含めるだけです。

TRUNCATECOLUMNS = TRUE | FALSE

リバースロジックを使用した ENFORCE_LENGTH の代替構文(他のシステムとの互換性のため)

ターゲット列の長さを超えるテキスト文字列を切り捨てるかどうかを指定するブール値。

  • TRUE の場合、文字列はターゲット列の長さに自動的に切り捨てられます。

  • FALSE の場合、ロードされた文字列がターゲット列の長さを超えると、 COPY ステートメントはエラーを生成します。

現在、このコピーオプションは CSV データのみをサポートしています。

デフォルト: FALSE

注釈

  • ターゲット文字列の列の長さが最大に設定されている場合(例: VARCHAR (16777216))、着信文字列はこの長さを超えることはできません。そうでない場合、 COPY コマンドはエラーを生成します。

  • このパラメーターは機能的には ENFORCE_LENGTH と同等ですが、逆の動作をします。他のデータベースとの互換性のために提供されています。必要な出力を生成するには、 COPY ステートメントにこれら2つのパラメーターのいずれかを含めるだけです。

FORCE = TRUE | FALSE

以前にロードされたかどうか、ロード後に変更があったかどうかに関係なく、すべてのファイルをロードするよう指定するブール値。このオプションはファイルを再ロードし、テーブル内のデータを複製する可能性があることに注意します。

デフォルト: FALSE

LOAD_UNCERTAIN_FILES = TRUE | FALSE

ロード状態が不明なファイルをロードすることを指定するブール値。 COPY コマンドはデフォルトでこれらのファイルをスキップします。

次の条件の すべて が当てはまる場合、ロードステータスは不明です。

  • ファイルの LAST_MODIFIED 日付(つまり、ファイルがステージされた日付)が65日以上前。

  • データの初期セットがテーブルにロードされたのが65日以上前。

  • ファイルが既にテーブルに正常にロードされている場合、このイベントが発生したのは65日以上前。

ロードステータスが既知かどうかに関係なく、 COPY コマンドにすべてのファイルを強制的にロードさせるには、代わりに FORCE オプションを使用します。

ロードステータスの不確実性の詳細については、 古いファイルをロードする をご参照ください。

デフォルト: FALSE

使用上の注意

  • スキーマに同じ名前のテーブルやビューを含めることはできません。テーブルを作成する場合:

    • 同じ名前のビューがスキーマに既に存在する場合、エラーが返され、テーブルは作成されません。

    • 同じ名前のテーブルがスキーマに既に存在する場合、オプションの OR REPLACE キーワードがコマンドに含まれていない限り、エラーが返され、テーブルは作成されません。

    重要

    OR REPLACE を使用することは、既存のテーブルで DROP TABLE を使用してから、同じ名前で新しいテーブルを作成することと同等です。ただし、ドロップされたテーブルは、システムから完全には削除 されません 。代わりに、Time Travel内で保持されます。Time Travelでドロップされたテーブルは復元できますが、アカウントのデータストレージにも寄与するため、これは重要です。詳細については、 Time TravelおよびFail-safeのストレージコスト をご参照ください。

  • 予約キーワード と同様に、 ANSI 予約関数名(CURRENT_DATECURRENT_TIMESTAMP など)は列名として使用できません。

  • CREATE TABLE ... AS SELECT (CTAS):

    • SELECT リストの列名のエイリアスが有効な列である場合、 CTAS ステートメントでは列定義は不要です。省略した場合、列の名前と型は基になるクエリから推測されます。

      CREATE TABLE <table_name> AS SELECT ...
      

      または、次の構文を使用して名前を明示的に指定できます。

      CREATE TABLE <table_name> ( <col1_name> , <col2_name> , ... ) AS SELECT ...
      

      指定する列名の数は、クエリ内の SELECT リストアイテムの数と一致する必要があります。列のタイプは、クエリによって生成されたタイプから推測されます。

    • クラスタリングキーは CTAS ステートメントで使用できます。ただし、クラスタリングキーを指定する場合、列定義が必要であり、ステートメントで明示的に指定する必要があります。

  • トランザクション内では、 DDL ステートメント( CREATE TEMPORARY/TRANSIENT TABLE を含む)は、 DDL ステートメント自体を実行する前にトランザクションをコミットします。次に、 DDL ステートメントは独自のトランザクションで実行されます。DDL ステートメントの後の次のステートメントが、新しいトランザクションを開始します。したがって、単一のトランザクション内で仮テーブルまたは一時テーブルの作成、使用、およびドロップはできません。トランザクション内で仮テーブルまたは一時テーブルを使用する場合は、トランザクションの前にテーブルを作成し、トランザクションの後にテーブルをドロップします。

現在のデータベースに単純なテーブルを作成し、テーブルに行を挿入します。

CREATE TABLE mytable (amount NUMBER);

+-------------------------------------+
| status                              |
|-------------------------------------|
| Table MYTABLE successfully created. |
+-------------------------------------+

INSERT INTO mytable VALUES(1);

SHOW TABLES like 'mytable';

+---------------------------------+---------+---------------+-------------+-------+---------+------------+------+-------+--------------+----------------+
| created_on                      | name    | database_name | schema_name | kind  | comment | cluster_by | rows | bytes | owner        | retention_time |
|---------------------------------+---------+---------------+-------------+-------+---------+------------+------+-------+--------------+----------------|
| Mon, 11 Sep 2017 16:32:28 -0700 | MYTABLE | TESTDB        | PUBLIC      | TABLE |         |            |    1 |  1024 | ACCOUNTADMIN | 1              |
+---------------------------------+---------+---------------+-------------+-------+---------+------------+------+-------+--------------+----------------+

DESC TABLE mytable;

+--------+--------------+--------+-------+---------+-------------+------------+-------+------------+---------+
| name   | type         | kind   | null? | default | primary key | unique key | check | expression | comment |
|--------+--------------+--------+-------+---------+-------------+------------+-------+------------+---------|
| AMOUNT | NUMBER(38,0) | COLUMN | Y     | NULL    | N           | N          | NULL  | NULL       | NULL    |
+--------+--------------+--------+-------+---------+-------------+------------+-------+------------+---------+

単純なテーブルを作成し、テーブルとテーブル内の列の両方にコメントを指定します。

CREATE TABLE example (col1 number comment 'a column comment') COMMENT='a table comment';

+-------------------------------------+
| status                              |
|-------------------------------------|
| Table EXAMPLE successfully created. |
+-------------------------------------+

SHOW TABLES like 'example';

+---------------------------------+---------+---------------+-------------+-------+-----------------+------------+------+-------+--------------+----------------+
| created_on                      | name    | database_name | schema_name | kind  | comment         | cluster_by | rows | bytes | owner        | retention_time |
|---------------------------------+---------+---------------+-------------+-------+-----------------+------------+------+-------+--------------+----------------|
| Mon, 11 Sep 2017 16:35:59 -0700 | EXAMPLE | TESTDB        | PUBLIC      | TABLE | a table comment |            |    0 |     0 | ACCOUNTADMIN | 1              |
+---------------------------------+---------+---------------+-------------+-------+-----------------+------------+------+-------+--------------+----------------+

DESC TABLE example;

+------+--------------+--------+-------+---------+-------------+------------+-------+------------+------------------+
| name | type         | kind   | null? | default | primary key | unique key | check | expression | comment          |
|------+--------------+--------+-------+---------+-------------+------------+-------+------------+------------------|
| COL1 | NUMBER(38,0) | COLUMN | Y     | NULL    | N           | N          | NULL  | NULL       | a column comment |
+------+--------------+--------+-------+---------+-------------+------------+-------+------------+------------------+

既存のテーブルから選択してテーブルを作成します。

CREATE TABLE mytable_copy (b) AS SELECT * from mytable;

DESC TABLE mytable_copy;

+------+--------------+--------+-------+---------+-------------+------------+-------+------------+---------+
| name | type         | kind   | null? | default | primary key | unique key | check | expression | comment |
|------+--------------+--------+-------+---------+-------------+------------+-------+------------+---------|
| B    | NUMBER(38,0) | COLUMN | Y     | NULL    | N           | N          | NULL  | NULL       | NULL    |
+------+--------------+--------+-------+---------+-------------+------------+-------+------------+---------+

CREATE TABLE mytable_copy2 AS SELECT b+1 AS c FROM mytable_copy;

DESC TABLE mytable_copy2;

+------+--------------+--------+-------+---------+-------------+------------+-------+------------+---------+
| name | type         | kind   | null? | default | primary key | unique key | check | expression | comment |
|------+--------------+--------+-------+---------+-------------+------------+-------+------------+---------|
| C    | NUMBER(39,0) | COLUMN | Y     | NULL    | N           | N          | NULL  | NULL       | NULL    |
+------+--------------+--------+-------+---------+-------------+------------+-------+------------+---------+

SELECT * FROM mytable_copy2;

+---+
| C |
|---|
| 2 |
+---+

既存のテーブルから選択してテーブルを作成するより高度な例。この例では、新しいテーブルの summary_amount 列の値は、ソーステーブルの2つの列から派生しています。

CREATE TABLE testtable-summary (name, summary_amount) AS SELECT name, amount1 + amount2 FROM testtable;

段階的なParquetデータファイルから列を選択して、テーブルを作成します。

CREATE OR REPLACE TABLE parquet_col (
  custKey number default NULL,
  orderDate date default NULL,
  orderStatus varchar(100) default NULL,
  price varchar(255)
)
AS SELECT
  $1:o_custkey::number,
  $1:o_orderdate::date,
  $1:o_orderstatus::text,
  $1:o_totalprice::text
FROM @my_stage;

+-----------------------------------------+
| status                                  |
|-----------------------------------------|
| Table PARQUET_COL successfully created. |
+-----------------------------------------+

DESC TABLE parquet_col;

+-------------+--------------+--------+-------+---------+-------------+------------+-------+------------+---------+
| name        | type         | kind   | null? | default | primary key | unique key | check | expression | comment |
|-------------+--------------+--------+-------+---------+-------------+------------+-------+------------+---------|
| CUSTKEY     | NUMBER(38,0) | COLUMN | Y     | NULL    | N           | N          | NULL  | NULL       | NULL    |
| ORDERDATE   | DATE         | COLUMN | Y     | NULL    | N           | N          | NULL  | NULL       | NULL    |
| ORDERSTATUS | VARCHAR(100) | COLUMN | Y     | NULL    | N           | N          | NULL  | NULL       | NULL    |
| PRICE       | VARCHAR(255) | COLUMN | Y     | NULL    | N           | N          | NULL  | NULL       | NULL    |
+-------------+--------------+--------+-------+---------+-------------+------------+-------+------------+---------+

別のテーブルと同じ列定義を持つが、行がないテーブルを作成します。

CREATE TABLE mytable (amount NUMBER);

INSERT INTO mytable VALUES(1);

SELECT * FROM mytable;

+--------+
| AMOUNT |
|--------|
|      1 |
+--------+

CREATE TABLE mytable_2 LIKE mytable;

DESC TABLE mytable_2;

+--------+--------------+--------+-------+---------+-------------+------------+-------+------------+---------+
| name   | type         | kind   | null? | default | primary key | unique key | check | expression | comment |
|--------+--------------+--------+-------+---------+-------------+------------+-------+------------+---------|
| AMOUNT | NUMBER(38,0) | COLUMN | Y     | NULL    | N           | N          | NULL  | NULL       | NULL    |
+--------+--------------+--------+-------+---------+-------------+------------+-------+------------+---------+

SELECT * FROM mytable_2;

+--------+
| AMOUNT |
|--------|
+--------+

複数列のクラスタリングキーを持つテーブルを作成します。

CREATE TABLE mytable (date timestamp_ntz, id number, content variant) CLUSTER BY (date, id);

SHOW TABLES LIKE 'mytable';

+---------------------------------+---------+---------------+-------------+-------+---------+------------------+------+-------+--------------+----------------+
| created_on                      | name    | database_name | schema_name | kind  | comment | cluster_by       | rows | bytes | owner        | retention_time |
|---------------------------------+---------+---------------+-------------+-------+---------+------------------+------+-------+--------------+----------------|
| Mon, 11 Sep 2017 16:20:41 -0700 | MYTABLE | TESTDB        | PUBLIC      | TABLE |         | LINEAR(DATE, ID) |    0 |     0 | ACCOUNTADMIN | 1              |
+---------------------------------+---------+---------------+-------------+-------+---------+------------------+------+-------+--------------+----------------+

テーブルの列の照合を指定します。

CREATE TABLE collation_demo (
  uncollated_phrase VARCHAR, 
  utf8_phrase VARCHAR COLLATE 'utf8',
  english_phrase VARCHAR COLLATE 'en',
  spanish_phrase VARCHAR COLLATE 'sp'
  );

INSERT INTO collation_demo (uncollated_phrase, utf8_phrase, english_phrase, spanish_phrase) 
   VALUES ('pinata', 'pinata', 'pinata', 'piñata');