内部ステージからのデータのコピー

ステージングされたファイルからターゲットテーブルにデータをロードします。

このトピックの内容:

データのロード

COPY INTO <テーブル> を実行して、ステージングされたデータをターゲットテーブルにロードします。

注釈

データをロードするには、 ウェアハウス が必要です。自動再開が構成されていないウェアハウスを使用している場合は、 ALTER WAREHOUSE を実行してウェアハウスを再開します。ウェアハウスの起動には最大5分かかることがあります。

ALTER WAREHOUSE mywarehouse RESUME;
Copy

ユーザーステージ

次の例では、 データのロードの準備 で作成された名前付き my_csv_format ファイル形式を使用して、ユーザーステージで staged のプレフィックスが付いたすべてのファイルからデータをロードします。

COPY INTO mytable from @~/staged FILE_FORMAT = (FORMAT_NAME = 'my_csv_format');
Copy

テーブルステージ

次のアドホック例では、 mytable テーブルのステージのすべてのファイルからデータをロードします。COPY コマンドは、名前付きファイル形式を参照する代わりに、ファイル形式オプションを指定します。この例では、パイプ(|)フィールド区切り文字を使用している CSV ファイルをロードします。COPY コマンドは、データファイルの最初の行をスキップします。

COPY INTO mytable FILE_FORMAT = (TYPE = CSV FIELD_DELIMITER = '|' SKIP_HEADER = 1);
Copy

テーブルステージのファイルからデータをコピーする場合、Snowflakeはテーブルステージのファイルを自動的にチェックするため、 FROM 句は省略できます。

名前付きステージ

次の例では、 ローカルファイルに対する内部ステージの選択 で作成された my_stage という名前のステージのすべてのファイルからデータをロードします。

COPY INTO mytable from @my_stage;
Copy

ファイル形式はステージ定義に含まれているため、指定する必要はありません。

データの検証

データをロードする前に、アップロードされたファイルのデータが正しくロードされるかどうかを検証できます。

アップロードされたファイルのデータを検証するには、検証モードで COPY INTO <テーブル> を実行する際に VALIDATION_MODE パラメーターを使用します。VALIDATION_MODE パラメーターは、ファイル内で発生したエラーを返します。その後、エラーなしでロードされるようにファイル内のデータを変更できます。

さらに、 COPY INTO <テーブル> コマンドの ON_ERROR コピーオプションは、読み込み中にファイルでエラーが発生した場合に実行するアクションを示します。

内部でステージングされたファイルの監視

Snowflakeは、次のような内部ステージ(ユーザー、テーブル、ステージ用)にアップロードされた各ファイルの詳細なメタデータを保持します。

  • ファイル名

  • ファイルサイズ(アップロード中に圧縮が指定された場合は圧縮されます)

  • LAST_MODIFIED 日付、たとえば、データファイルが最初にステージングされたとき、または最後に変更されたときのどちらか遅い方のタイムスタンプ

さらに、Snowflakeは、過去14日以内に実行された COPY INTO コマンドの履歴データを保持します。メタデータを使用して、アップロードの完了後にファイルを削除するなどのロードプロセスを監視および管理できます。

  • LIST コマンドを使用して、ステージングされたデータファイルのステータスを表示します。

  • COPY INTO <テーブル> コマンドのステータスを Classic Console の History 履歴タブ ページで監視します。

  • VALIDATE 関数を使用して、ロードしたデータファイルを検証し、ロード中に発生したエラーを取得します。

  • COPY INTO コマンドを使用して、テーブルにロードされたデータの履歴を取得するには、 LOAD_HISTORY 情報スキーマビューを使用します。

データファイルの管理

ステージングされたファイルは、次の方法を使用してSnowflakeステージ(ユーザーステージ、テーブルステージ、または名前付きステージ)から削除できます。

  • 正常にロードされたファイルは、 COPY INTO <テーブル> コマンドで PURGE コピーオプションを指定することにより、ロード中にステージから削除できます。

  • ロードが完了したら、 REMOVE コマンドを使用してステージ内のファイルを削除します。

ファイルを削除すると、不注意で再びロードされることはありません。また、ステージ内の既存のファイルが既にロードされているかどうかを確認するために COPY コマンドがスキャンする必要があるファイルの数を減らすため、ロードパフォーマンスも向上します。

あるステージから別のステージへのファイルのコピー

COPY FILES コマンドを使用して、名前付きステージ間でファイルをコピーすることにより、データを1つの場所に整理します。

次の例では、ソースステージ(src_stage)からターゲットステージ(trg_stage)にすべてのファイルをコピーします。

COPY FILES
  INTO @trg_stage
  FROM @src_stage;
Copy

コピーするファイル名のリストを指定することや、パターンマッチングを使ってファイルをコピーすることもできます。詳細については、 COPY FILES 例 をご参照ください。