Google Cloud Storageステージからのデータのコピー

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

このトピックの内容:

データのロード

COPY INTO <テーブル> を実行して、データをターゲットテーブルにロードします。

注釈

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

ALTER WAREHOUSE mywarehouse RESUME;

重要

外部ステージに対して返されるオブジェクトのリストには、1つ以上の「ディレクトリBLOB」が含まれる場合があります。基本的に、スラッシュ文字(/)で終わるパスです。例:

LIST @my_gcs_stage;

+---------------------------------------+------+----------------------------------+-------------------------------+
| name                                  | size | md5                              | last_modified                 |
|---------------------------------------+------+----------------------------------+-------------------------------|
| my_gcs_stage/load/                    |  12  | 12348f18bcb35e7b6b628ca12345678c | Mon, 11 Sep 2019 16:57:43 GMT |
| my_gcs_stage/load/data_0_0_0.csv.gz   |  147 | 9765daba007a643bdff4eae10d43218y | Mon, 11 Sep 2019 18:13:07 GMT |
+---------------------------------------+------+----------------------------------+-------------------------------+

これらのBLOBは、Googleが提供する他のツールを使用するのではなく、Google Cloud Platform Consoleでディレクトリが作成されるときにリストされます。

オブジェクトリストにディレクトリBLOBが含まれていると、ステージを参照するCOPY ステートメントが失敗する可能性があります。エラーを回避するために、ステージのファイルリストにディレクトリBLOBが含まれる場合、ファイルパターンマッチングを使用して、含めるファイル(つまり PATTERN 句)を識別することをお勧めします。例については、 パターンマッチングを使用したデータのロード (このトピック内)をご参照ください。または、 COPY ステートメントで ON_ERROR = SKIP_FILE に設定します。

パターンマッチングを使用したデータのロード

次の例では、 Google Cloud Storageの統合の構成 で作成された、名前付き my_gcs_stage ステージのファイルからデータをロードします。パターンマッチングを使用すると、ステートメントは、名前が文字列 sales で始まるファイルのみをロードします。

COPY INTO mytable
  FROM @my_gcs_stage
  PATTERN='.*sales.*.csv';

名前付きファイル形式がステージ定義に含まれていたため、ファイル形式オプションは指定されていません。

パス/プレフィックスを使用したデータのロード

次の例では、Cloud Storageバケットに data/files パス(つまり、プレフィックス)が付いたすべてのファイルをロードします。使用する名前付き my_csv_format ファイル形式は、 データロードの準備 で作成されたものです。パスはパターンマッチングと組み合わせることができます。

COPY INTO mytable
  FROM gcs://mybucket/data/files
  FILE_FORMAT = (FORMAT_NAME = my_csv_format);

アドホックファイル形式オプションを使用したデータのロード

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

COPY INTO mytable
  FROM gcs://mybucket/data/files
  STORAGE_INTEGRATION = myint
  FILE_FORMAT = (TYPE = CSV FIELD_DELIMITER = '|' SKIP_HEADER = 1);

データの検証

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

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

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

データロードの監視

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

  • COPY INTO <テーブル> コマンドのステータスをSnowflakeのウェブインターフェイスの History History tab ページで監視します。

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