阶段、文件格式与 COPY INTO

Snowflake 中的数据管道自动化

Emily Melhuish

Technical Curriculum Developer, Snowflake

Snowflake 支撑多种工作负载

截图 2026-05-11 11.52.34 am.png

1 * Snowflake 学习资料
Snowflake 中的数据管道自动化

示例管道

 

 

截图 2026-05-11 10.48.51 am.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...