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

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

このトピックの内容:

内部ステージの型

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

  • ユーザー

  • テーブル

  • 名前付き

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

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

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

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

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

ユーザーステージ

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

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

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

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

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

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

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

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

テーブルステージ

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

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

  • テーブルステージの名前はテーブルと同じです。たとえば、 mytable という名前のテーブルには、 @%mytable として参照されるステージがあります。

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

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

テーブルステージは独立したデータベースオブジェクトではなく、テーブル自体に結び付けられた暗黙的なステージです。テーブルステージには、独自の付与可能な権限はありません。ファイルをテーブルステージにステージングする、ファイルを一覧表示する、ステージ上でクエリを実行する、またはドロップするには、テーブル所有者(テーブルに対する OWNERSHIP 権限を持つロール)である必要があります。

ファイル内のデータを複数のテーブルにコピーする必要がある場合には、このオプションは適切ではありません。

名前付きステージ

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

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

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

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

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

名前付きステージの作成

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

注釈

ステージを格納するデータベースおよびスキーマに対する USAGE 権限と、スキーマに対する CREATE STAGE 権限が付与または継承されたロールを使用する必要があります。

CREATE STAGE については、 アクセス制御の要件 をご参照ください。

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

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

次の例では、 データロードの準備 で作成された my_csv_format という名前のファイル形式オブジェクトを参照する内部ステージを作成します。

CREATE OR REPLACE STAGE my_stage
  FILE_FORMAT = my_csv_format;
Copy

注釈

ステージに名前付きファイル形式オブジェクト(または個々のファイル形式オプション)を指定すると、後でステージからデータをロードするために使用する COPY コマンドで同じファイル形式オプションを指定する必要がありません。

次の例では、名前付きファイル形式を参照するのではなく、アドホックファイル形式オプションを指定する内部ステージを作成します。このステージのデータファイルには、 CSV 形式とパイプ(|)フィールド区切り文字があります。このステージが参照されると、 COPY コマンドはデータファイルの最初の行をスキップします。

CREATE OR REPLACE STAGE my_stage
  file_format = (type = 'CSV' FIELD_DELIMITER = '|' SKIP_HEADER = 1);
Copy

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

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

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

  2. Data » Databases を選択します。

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

  4. Create » Stage » Snowflake Managed を選択します。

  5. Stage Name を入力します。

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

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

    注釈

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

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

  9. Create を選択します。

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

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

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