ローカルファイルのステージの選択

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

このトピックの内容:

ステージタイプ

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

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

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

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

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

ユーザーステージ

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

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

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

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

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

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

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

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

テーブルステージ

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

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

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

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

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

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

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

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

内部の名前付きステージ

内部ステージは、データのロードに最大限の柔軟性を提供する名前付きデータベースオブジェクトです。データベースオブジェクトであるため、すべてのオブジェクトに適用されるセキュリティ/アクセスルールが適用されます。

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

  • ステージの所有権を別のロールに移し、ステージを使用するために付与された権限を変更して、ロールを追加または削除できます。

  • ステージを作成する場合、それらのロールを持つユーザーがステージを使用できるようにするには、ステージの権限を1つ以上のロールに明示的に付与する必要があります。

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

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

ステージの作成

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

ウェブインターフェイス

Databases Databases tab » <データベース名> » Stages をクリックします

SQL

CREATE STAGE

名前付きステージの作成

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

CREATE OR REPLACE STAGE my_stage
  FILE_FORMAT = my_csv_format;

注釈

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

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

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

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