ローカルファイルに対する内部ステージの選択¶
ステージは、ファイル内のデータをテーブルにロードできるように、データファイルの保存場所(つまり、「ステージングした場所」)を指定します。
このトピックの内容:
内部ステージの型¶
Snowflakeは、次の型の内部ステージをサポートしています。
ユーザー
テーブル
名前付き
デフォルトでは、Snowflakeの各ユーザーとテーブルには、ステージングデータファイルをロードするための内部ステージが自動的に割り当てられます。さらに、名前付きの内部ステージを作成できます。
ファイルステージング情報は、データロードプロセスの両方のステップで必要です。
ファイルをSnowflakeにアップロードするときは、 PUT コマンドで内部ステージを指定する必要があります。
ステージングされたファイルからテーブルにデータをロードするとき、 COPY INTO <テーブル> コマンドで同じステージを指定する必要があります。
特定のデータファイルに最適なステージタイプを検討します。各オプションには利点と潜在的な欠点があります。
ユーザーステージ¶
各ユーザーには、デフォルトでファイルを保存するためのSnowflakeステージが割り当てられています。このステージは、ファイルが1人のユーザーのみによってアクセスされるが、複数のテーブルにコピーする必要がある場合に便利なオプションです。
ユーザーステージには、次の特性と制限があります。
ユーザーステージは
@~
を使用して参照されます。たとえば、LIST @~
を使用して、ユーザーステージのファイルを一覧表示します。名前付きステージとは異なり、ユーザーステージは変更またはドロップできません。
ユーザーステージは、ファイル形式オプションの設定をサポートしていません。代わりに、 COPY INTO <テーブル> コマンドの一部としてファイル形式とコピーオプションを指定する必要があります。
次の場合には、このオプションは適切ではありません。
複数のユーザーがファイルにアクセスする必要がある場合。
現在のユーザーには、データがロードされるテーブルに対する INSERT 権限がない場合。
テーブルステージ¶
各テーブルには、デフォルトでファイルを保存するためのSnowflakeステージが割り当てられています。このステージは、複数のユーザーがファイルにアクセスでき、単一のテーブルにコピーするだけでよい場合に便利なオプションです。
テーブルステージには、次の特性と制限があります。
テーブルステージの名前はテーブルと同じです。たとえば、
mytable
という名前のテーブルには、@%mytable
として参照されるステージがあります。名前付きステージとは異なり、テーブルステージは変更またはドロップできません。
テーブルステージは、ロード中のデータの変換をサポートしません(つまり、クエリを COPY コマンドのソースとして使用)。
テーブルステージは独立したデータベースオブジェクトではなく、テーブル自体に結び付けられた暗黙的なステージです。テーブルステージには、独自の付与可能な権限はありません。ファイルをテーブルステージにステージングする、ファイルを一覧表示する、ステージ上でクエリを実行する、またはドロップするには、テーブル所有者(テーブルに対する OWNERSHIP 権限を持つロール)である必要があります。
ファイル内のデータを複数のテーブルにコピーする必要がある場合には、このオプションは適切ではありません。
名前付きステージ¶
名前付きステージは、データのロードに最大限の柔軟性を提供するデータベースオブジェクトです。
ステージで適切な権限を持つユーザーは、任意のテーブルにデータをロードできます。
ステージはデータベースオブジェクトであるため、すべてのオブジェクトに適用されるセキュリティ/アクセスルールが適用されます。ステージを使用する権限は、ロールから付与または取り消すことができます。さらに、ステージの所有権は、別のロールに移譲することができます。
自分だけがロードするデータファイル、または単一のテーブルにのみロードするデータファイルをステージする場合は、ユーザーステージまたはデータをロードするテーブルのステージのいずれかを使用することをお勧めします。
名前付きステージはオプションですが、複数のユーザーやテーブルが関係する可能性のある通常のデータロードを計画する場合は、使用を 推奨 します。名前付きステージの作成手順については、下記の 名前付きステージの作成 をご参照ください。
名前付きステージの作成¶
ウェブインターフェイスまたは SQLを使用して、名前付きの内部ステージを作成できます。
- Classic Console
- SQL
次の例では、 データロードの準備 で作成された 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);