ローカルファイルに対する内部ステージの選択

ステージは、ファイル内のデータをテーブルにロードできるように、データファイルの保存場所(つまり、「ステージングした場所」)を指定します。

このトピックの内容:

内部ステージの型

Snowflakeは、次の型の内部ステージをサポートしています。

  • ユーザー

  • テーブル

  • 名前付き

デフォルトでは、Snowflakeの各ユーザーとテーブルには、ステージングデータファイルをロードするための内部ステージが自動的に割り当てられます。さらに、名前付きの内部ステージを作成できます。

ファイルステージング情報は、データロードプロセスの両方のステップで必要です。

  1. ファイルをSnowflakeにアップロードするときは、 PUT コマンドで内部ステージを指定する必要があります。

  2. ステージングされたファイルからテーブルにデータをロードするとき、 COPY INTO <テーブル> コマンドで同じステージを指定する必要があります。

特定のデータファイルに最適なステージタイプを検討します。各オプションには利点と潜在的な欠点があります。

ユーザーステージ

各ユーザーには、デフォルトでファイルを保存するためのSnowflakeステージが割り当てられています。このステージは、ファイルが1人のユーザーのみによってアクセスされるが、複数のテーブルにコピーする必要がある場合に便利なオプションです。

ユーザーステージには、次の特性と制限があります。

  • ユーザーステージは @~ を使用して参照されます。たとえば、 LIST @~ を使用して、ユーザーステージのファイルを一覧表示します。

  • 名前付きステージとは異なり、ユーザーステージは変更またはドロップできません。

  • ユーザーステージは、ファイル形式オプションの設定をサポートしていません。代わりに、 COPY INTO <テーブル> コマンドの一部としてファイル形式とコピーオプションを指定する必要があります。

次の場合には、このオプションは適切ではありません。

  • 複数のユーザーがファイルにアクセスする必要がある場合。

  • 現在のユーザーには、データがロードされるテーブルに対する INSERT 権限がない場合。

テーブルステージ

注釈

Snowflakeの Apache Iceberg™ テーブルはテーブルステージをサポートしていません。

各テーブルには、デフォルトでファイルを保存するためのSnowflakeステージが割り当てられています。このステージングは テーブル ステージと呼ばれています。

1つのテーブルにファイルをコピーするだけで複数のユーザーがファイルにアクセスできるようにする場合、テーブルステージを使用することができます。

テーブルステージには、次の特性と制限があります。

  • テーブルステージはテーブルと同じ名前です。例えば、 mytable というテーブルには、 @%mytable というステージがあります。

  • テーブルステージは、テーブルオブジェクトに結びついた暗黙的ステージです。別のデータベースオブジェクトではありません。テーブルステージには、独自の付与可能な権限はありません。テーブルステージは、ファイルデータを複数のテーブルにコピーする必要がある場合にも適していません。

  • ファイルをテーブルステージにステージングする、ファイルを一覧表示する、ファイルをクエリする、またはドロップするには、テーブル所有者(テーブルに対する OWNERSHIP 権限を持つロール)である必要があります。

  • 名前付きステージとは異なり、テーブルステージを変更したり削除したりすることはできません。

  • テーブルステージは、ロード中のデータの変換をサポートしません(クエリを COPY コマンドのソースとして使用)。

名前付きステージ

名前付きステージは、データのロードに最大限の柔軟性を提供するデータベースオブジェクトです。

  • ステージで適切な権限を持つユーザーは、任意のテーブルにデータをロードできます。

  • ステージはデータベースオブジェクトであるため、すべてのオブジェクトに適用されるセキュリティ/アクセスルールが適用されます。ステージを使用する権限は、ロールから付与または取り消すことができます。さらに、ステージの所有権は、別のロールに移譲することができます。

自分だけがロードするデータファイル、または単一のテーブルにのみロードするデータファイルをステージする場合は、ユーザーステージまたはデータをロードするテーブルのステージのいずれかを使用することをお勧めします。

名前付きステージはオプションですが、複数のユーザーやテーブルが関係する可能性のある通常のデータロードを計画する場合は、使用を 推奨 します。名前付きステージの作成手順については、下記の 名前付きステージの作成 をご参照ください。

名前付きステージの作成

SQL またはウェブインターフェイスを使用して、名前付き内部ステージを作成できます。

注釈

内部ステージを作成するには、必要な権限が付与されているか継承されているロールを使用する必要があります。詳細については、 CREATE STAGEアクセス制御の要件 をご参照ください。

SQL を使用して名前付きステージを作成する

SQL を使用して名前付きステージを作成するには、 CREATE STAGE コマンドを使用します。

次の例では、サーバー側暗号化を使用する内部ステージを作成します。

CREATE STAGE my_int_stage
  ENCRYPTION = (TYPE = 'SNOWFLAKE_SSE');
Copy

Snowsightを使用して名前付きステージを作成する

Snowsight を使用して名前付き内部ステージを作成するには、次を実行します。

  1. Snowsight にサインインします。

  2. ナビゲーションメニューで Create » Stage » Snowflake Managed を選択します。

  3. Create Stage ダイアログで、 Stage Name を入力します。

  4. ステージを作成するデータベースとスキーマを選択します。

  5. オプションで、 Directory table の選択を解除します。ディレクトリテーブルを使用すると、ステージ上のファイルを確認できますが、ウェアハウスが必要になるためコストがかかります。現時点ではこのオプションの選択を解除し、後でディレクトリテーブルを有効にすることもできます。

  6. ステージ上のすべてのファイルでサポートされている Encryption の種類を選択します。詳細については、 内部ステージの暗号化 をご参照ください。ステージを作成した後に暗号化タイプを変更することはできません。

    注釈

    データアクセスを可能にするには、サーバー側の暗号化を使用します。そうしないと、ステージングされたファイルはデフォルトによりクライアント側で暗号化され、ダウンロード時に読み取れません。詳細については、 非構造化データアクセスのサーバー側の暗号化 をご参照ください。

  7. フィールドに入力してステージを説明します。詳細については、 CREATE STAGE をご参照ください。

  8. Create を選択します。

従来のコンソールを使用して名前付きステージを作成する

Databases データベースタブ » <データベース名> » Stages を選択します。

次: ローカルファイルシステムからのデータファイルのステージング