0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

snowflake stageを分かりやすく解説(外部ステージ/内部ステージ/COPYまで)

Last updated at Posted at 2026-01-05

はじめに

SnowflakeにはStage(ステージ) と呼ばれるデータ格納用の機能があります。

  • クラウドストレージ上のデータ
  • ローカル環境にあるCSVファイル
  • JSON/Parquet/XMLなどの半構造化データ

これらをStage経由でSnowflakeに取り込むことができます。
内部ステージなどは扱いやすい機能なので、ぜひ活用してみてください。

アジェンダ

  1. 外部ステージと内部ステージの違い
  2. データロードでサポートされているデータ型
  3. ステージの基本操作
  4. 内部ステージの実用例
  5. その他

1. 外部ステージと内部ステージの違い

Snowflakeのステージには次の2種類があります。

  • 外部ステージ
  • 内部ステージ

◆ 外部ステージ

Snowflake外部のクラウドストレージをステージとして利用する方式

対応しているクラウドストレージ

  • Amazon S3
  • Google Cloud Storage
  • Microsoft Azure Blob Storage

特徴

  • 大量データをクラウド側に保存したままSnowflakeへロードできる
  • Snowpipeを利用すると自動ロードが可能
  • Snowflake側のストレージコストを削減できる
  • イベント通知により、新規ファイル追加 → 即ロードが可能

snowpipeを利用した自動ロードの流れ

  1. クラウドストレージにファイルがアップロードされる
  2. ストレージのイベントがSnowpipeに通知
  3. Snowpipeがファイルを検知
  4. Snowflakeのテーブルに自動でロード

◆ 内部ステージ

Snowflake内部ストレージを利用する方式

種類

種類 指定方法 説明
ユーザーステージ @~ ユーザー専用
テーブルステージ @%テーブル名 テーブルに紐づく
名前付きステージ @スキーマ名 スキーマ内で共有して利用できる

特徴

  • Snowflake内にファイルをアップロードして管理できる
  • ローカルのCSVを簡単にアップロード可能
  • PUT/GETコマンドの操作がしやすい

2. データロードでサポートされているデータ型

種類 形式 説明
構造化 区切り(csv,tsv) 有効なシングルバイト区切り文字サポート
半構造化 JSON -
Avro 圧縮されたAvroファイルの自動検出・処理含む
ORC 圧縮された ORC ファイルの自動検出・処理含む
Parquet 圧縮されたParquetファイルの自動検出・処理含む
XML -

インフォメーション
上記のうち、アンロードに対応しているのはCSV、JSON、Parquetのみになります。

3. ステージの基本操作

コマンド名 説明 備考
PUT ローカルPC → ステージへアップロード 内部ステージのみ
COPY FILES ステージ間でファイルコピー -
GET ステージ → ローカルへダウンロード 内部ステージのみ
LIST ステージ内部のファイル一覧を表示 -
REMOVE ステージ内のファイルを削除 -

4. 内部ステージの実用例

◆ 手動で内部ステージを利用する方法 ※テストデータを利用しております。

▶ ① CSVファイルを準備
アップロードできないケースがあるため、
ファイルの保護(読み取り専用など) は解除しておく必要があります。

image.png


▶ ② ステージを作成
ステージ作成時にファイルフォーマットを同時に指定することも可能です。

ステージ作成 SQL
 CREATE OR REPLACE STAGE データベース名.スキーマ名.ステージ名
     FILE_FORMAT = (TYPE = 'CSV');

▶ ③ Web UI からステージを確認

  1. カタログを開く
  2. データベースエクスプローラーでステージ名を検索

▶ ④ CSVのアップロード

  1. 右上の「+ファイル」ボタンをクリック
  2. アップロード画面にCSVをドラッグ&ドロップして取り込み

image.png


▶ ⑤ COPY INTOを使用してテーブルにロード

COPY INTO 例
 COPY INTO データベース名.スキーマ名.テーブル名
     FROM @データベース名.スキーマ名.ステージ名
     FILE_FORMAT = @データベース名.スキーマ名.フォーマット名;
FILE FORMAT定義例
 CREATE OR REPLACE FILE FORMAT データベース名.スキーマ名.フォーマット名
     TYPE = CSV
     SKIP_HEADER = 1
     DATE_FORMAT = 'YYYY/MM/DD'
     FIELD_OPTIONALLY_ENCLOSED_BY = '"';

その他

  • SnowSQLやバッチ処理で自動化可能
    定期的なロードはタスクやSnowSQLと組み合わせても運用できます
     
  • COPY INTOは「新規ファイルのみ」ロード
    Snowflakeはロード済みファイルを記録し、同じファイル名はスキップします
     
  • Snowpipeの推奨ファイルサイズ
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?