内部ステージからのデータのコピー¶
ステージングされたファイルからターゲットテーブルにデータをロードします。
このトピックの内容:
データのロード¶
COPY INTO <テーブル> を実行して、ステージングされたデータをターゲットテーブルにロードします。
注釈
データをロードするには、 ウェアハウス が必要です。自動再開が構成されていないウェアハウスを使用している場合は、 ALTER WAREHOUSE を実行してウェアハウスを再開します。ウェアハウスの起動には最大5分かかることがあります。
ALTER WAREHOUSE mywarehouse RESUME;
ユーザーステージ¶
次の例では、 データのロードの準備 で作成された名前付き my_csv_format
ファイル形式を使用して、ユーザーステージで staged
のプレフィックスが付いたすべてのファイルからデータをロードします。
COPY INTO mytable from @~/staged FILE_FORMAT = (FORMAT_NAME = 'my_csv_format');
テーブルステージ¶
次のアドホック例では、 mytable
テーブルのステージのすべてのファイルからデータをロードします。COPY コマンドは、名前付きファイル形式を参照する代わりに、ファイル形式オプションを指定します。この例では、パイプ(|
)フィールド区切り文字を使用している CSV ファイルをロードします。COPY コマンドは、データファイルの最初の行をスキップします。
COPY INTO mytable FILE_FORMAT = (TYPE = CSV FIELD_DELIMITER = '|' SKIP_HEADER = 1);
テーブルステージのファイルからデータをコピーする場合、Snowflakeはテーブルステージのファイルを自動的にチェックするため、 FROM 句は省略できます。
名前付きステージ¶
次の例では、 ローカルファイルに対する内部ステージの選択 で作成された my_stage
という名前のステージのすべてのファイルからデータをロードします。
COPY INTO mytable from @my_stage;
ファイル形式はステージ定義に含まれているため、指定する必要はありません。
データの検証¶
データをロードする前に、アップロードされたファイルのデータが正しくロードされるかどうかを検証できます。
アップロードされたファイルのデータを検証するには、検証モードで 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 FILES 例 をご参照ください。