Google Cloud Storageへのアンロード

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

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

ステップ1

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

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

ステップ2

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

Unloading data to Cloud Storage

ちなみに

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

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

このトピックの内容:

データをアンロードするためのクラウドストレージの構成

SnowflakeがCloud Storageバケットに書き込むには、外部クラウドストレージの認証責任をSnowflake IDおよびアクセス管理(IAM)エンティティに委任するようにストレージ統合オブジェクトを構成する必要があります。

構成手順については、 Google Cloud Storageの統合の構成 をご参照ください。

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

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

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

ウェブインターフェイス

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

SQL

CREATE STAGE

名前付きステージの作成

次の例では、 unload という名前のフォルダーパスを持つ my_ext_unload_stage という名前の外部ステージを作成します。ステージは次のオブジェクトを参照します。

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

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

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

    COPY INTO @my_ext_unload_stage/d1
    FROM mytable;
    
  2. Cloud Storageが提供するツールを使用して、バケットからオブジェクト(つまり、コマンドによって生成されたファイル)を取得します。

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

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

    Cloud Storageバケットの URI と、バケットにアクセスするためのストレージ統合を指定する必要があります。

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

    COPY INTO 'gcs://mybucket/unload/'
      FROM mytable
      STORAGE_INTEGRATION = gcs_int;
    
  2. Cloud Storageコンソール(または同等のクライアントアプリケーション)を使用して、バケットからオブジェクト(コマンドによって生成されたファイル)を取得します。