Amazon S3へのアンロード

既にAmazon Web Services(AWS)アカウントをお持ちで、データファイルの保存と管理にS3バケットを使用している場合、Snowflakeテーブルからデータをアンロードするときに既存のバケットとフォルダーパスを使用できます。このトピックでは、 COPY コマンドを使用して、テーブルからAmazon S3バケットにデータをアンロードする方法について説明します。その後、アンロードされたデータファイルをローカルファイルシステムにダウンロードできます。

次の図に示すように、S3バケットへのデータのアンロードは2つのステップで実行されます。

ステップ1

COPY INTO <場所> コマンドを使用して、SnowflakeデータベーステーブルからS3バケット内の1つ以上のファイルにデータをコピーします。コマンドでは、S3バケットを参照する名前付き外部ステージオブジェクトを指定するか(推奨)、バケットの URI およびストレージ統合またはセキュリティ認証情報(必要な場合)の いずれか を指定して、バケットに直接アンロードすることを選択できます。

使用する方法に関係なく、このステップでは、実行中の現在の仮想ウェアハウスがセッションのために必要です。ウェアハウスは、テーブルから行を書き込むためのコンピューティングリソースを提供します。

ステップ2

Amazonが提供するインターフェイス/ツールを使用して、S3バケットからファイルをダウンロードします。

Unloading data to S3

ちなみに

この一連のトピックの手順では、 データのアンロードの準備 を読み終えて、必要がある場合は、名前付きファイル形式が作成済みであることを前提としています。

始める前に、ベストプラクティス、ヒント、およびその他のガイダンスについて データのアンロードに関する考慮事項 を読むこともできます。

このトピックの内容:

データをアンロードするためのS3バケットの構成

Snowflakeは、フォルダー(およびすべてのサブフォルダー)に新しいファイルを作成するために、S3バケットおよびフォルダーに対する次の権限を必要とします。

  • s3:DeleteObject

  • s3:PutObject

ベストプラクティスとして、Snowflakeは、外部クラウドストレージの認証責任をSnowflake IDおよびアクセス管理(IAM)エンティティに委任するように、ストレージ統合オブジェクトを構成することをお勧めします。

構成手順については、 Amazon S3へのセキュアアクセスの構成 をご参照ください。

外部ステージへのデータのアンロード

外部ステージは、データのアンロードに最大限の柔軟性を提供する名前付きデータベースオブジェクトです。データベースオブジェクトであるため、名前付きステージの権限は任意のロールに付与できます。

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

ウェブインターフェイス

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

SQL

CREATE STAGE

名前付きステージの作成

次の例では、 files という名前のフォルダーパスを持つ unload という名前のS3バケットを使用して、 my_ext_unload_stage という名前の外部ステージを作成します。ステージは、 s3_int という名前の既存のストレージ統合を使用してS3バケットにアクセスします。

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

CREATE OR REPLACE STAGE my_ext_unload_stage URL='s3://unload/files/'
    STORAGE_INTEGRATION = s3_int
    FILE_FORMAT = my_csv_unload_format;

名前付きステージへのデータのアンロード

  1. COPY INTO <場所> コマンドを使用して、テーブルからS3バケットに外部ステージを使用してデータをアンロードします。

    次の例では、 my_ext_unload_stage ステージを使用して、 mytable テーブル内のすべての行を1つ以上のファイルからS3バケットにアンロードします。ファイルには d1 ファイル名のプレフィックスが適用されます。

    COPY INTO @my_ext_unload_stage/d1 from mytable;
    
  2. S3コンソール(または同等のクライアントアプリケーション)を使用して、バケットからオブジェクト(つまり、コマンドによって生成されたファイル)を取得します。

S3バケットへのデータの直接アンロード

  1. COPY INTO <場所> コマンドを使用して、テーブルから指定されたS3バケットにデータを直接アンロードします。このオプションは、同じテーブルとバケットのパラメーターによる定期的なデータのアンロードを計画していない場合の、アドホックアンロードに適しています。

    S3バケットの URI と、バケットにアクセスするためのストレージ統合または認証情報を COPY コマンドで指定する必要があります。

    次の例では、 mytable テーブルのすべての行を、 mybucket S3バケットのフォルダーパスのプレフィックス unload/ を持つ1つ以上のファイルにアンロードします。

    COPY INTO s3://mybucket/unload/ from mytable storage_integration = s3_int;
    

    注釈

    この例では、参照されたS3バケットは、 s3_int という名前の参照されたストレージ統合を使用してアクセスされます。

  2. S3コンソール(または同等のクライアントアプリケーション)を使用して、バケットからオブジェクト(つまり、コマンドによって生成されたファイル)を取得します。