Stages、檔案格式與 COPY INTO

在 Snowflake 進行資料管線自動化

Emily Melhuish

Technical Curriculum Developer, Snowflake

Snowflake 支援多種工作負載

2026-05-11 上午 11:52:34 的螢幕擷取畫面.png

1 * Snowflake 教學素材
在 Snowflake 進行資料管線自動化

範例資料管線

 

 

2026-05-11 上午 10:48:51 的螢幕擷取畫面.png

1 * Snowflake 教學素材
在 Snowflake 進行資料管線自動化

認識 Harbr

Harbr 假想標誌

關於 Harbr

  • 全球物流與供應鏈平台
  • 使用 Snowflake 追蹤出貨、倉儲庫存與配送表現
  • 從多區域的供應商系統匯入資料
在 Snowflake 進行資料管線自動化

資料載入問題

資料載入示意圖

Stage = 臨時儲存位置

在 Snowflake 進行資料管線自動化

Stage 類型

兩種 stage 類型

內部 Stage

  • 使用者
    • 單一使用者的個人暫存區
  • 資料表
    • 綁定至特定資料表
  • 具名
    • 在綱要中建立的資料庫物件

外部 Stage

  • 具名
    • 指向雲端提供者
在 Snowflake 進行資料管線自動化

Stage 參數

目錄資料表

CREATE STAGE harbr_stage
  DIRECTORY = (ENABLE = TRUE)

內部 Stage 加密

ENCRYPTION = (TYPE = SNOWFLAKE_FULL)
ENCRYPTION = (TYPE = SNOWFLAKE_SSE)

外部 Stage 加密

ENCRYPTION = 
([ TYPE = 'AWS_CSE' ] MASTER_KEY = '') 

ENCRYPTION = 
([ TYPE = 'AWS_SSE_S3' ]) 

...
在 Snowflake 進行資料管線自動化

檔案格式

  • 結構化格式:CSV(自訂分隔符、標題列、引號規則)
  • 半結構化格式:JSON、Parquet、Avro、ORC、XML。

    • 直接載入到 VARIANT 欄
    • 解析規則定義一次,所有載入作業共用
  • 僅需更新一次格式物件

SQL

CREATE FILE FORMAT harbr_csv_format
  TYPE = 'CSV'
  FIELD_DELIMITER = ','
  SKIP_HEADER = 1;
在 Snowflake 進行資料管線自動化

COPY INTO

使用具名 stage 與具名檔案格式載入

COPY INTO logistics.shipments
FROM @harbr_internal_stage/shipments/
FILE_FORMAT = (FORMAT_NAME = 'harbr_csv_format')
在 Snowflake 進行資料管線自動化

錯誤處理

ON_ERROR 選項 行為
ABORT_STATEMENT 遇到第一個錯誤即整體失敗(預設)
CONTINUE 略過錯誤列,載入其他資料
SKIP_FILE 檔案任一處有錯誤就整個略過
SKIP_FILE_<num> 只有當錯誤超過指定數量才略過檔案
SKIP_FILE_<num>% 只有當錯誤超過指定百分比門檻才略過檔案
在 Snowflake 進行資料管線自動化

驗證模式與 COPY_HISTORY

僅驗證不載入 = 試跑

COPY INTO logistics.shipments
FROM @harbr_internal_stage/shipments/
FILE_FORMAT = (FORMAT_NAME = 'harbr_csv_format')
VALIDATION_MODE = RETURN_ERRORS;

檢視載入歷程

SELECT * FROM TABLE(INFORMATION_SCHEMA.COPY_HISTORY(
  TABLE_NAME => 'shipments',
  START_TIME => DATEADD('hour', -24,
    CURRENT_TIMESTAMP())));
在 Snowflake 進行資料管線自動化

一起來練習吧!

在 Snowflake 進行資料管線自動化

Preparing Video For Download...