You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Snowflake将Stage中CSV导入表无报错,但0条数据加载成功,求排查

解决Snowflake COPY命令无报错但加载0条数据的问题

以下是针对该问题的排查和解决步骤:

1. 修复分隔符的引号格式

你的文件格式定义和COPY命令中,分隔符使用的是中文单引号(‘|#|’、‘|*|’),Snowflake仅识别英文单引号,这会导致分隔符不匹配,无法正确解析数据。将所有中文引号替换为英文单引号:

修改后的文件格式脚本:

Create or Replace FILE FORMAT csv_format
TYPE = CSV
FIELD_DELIMITER = '|#|'
SKIP_HEADER = 1
NULL_IF = ()
RECORD_DELIMITER = '|*|'
EMPTY_FIELD_AS_NULL = FALSE
Compression = none;

修改后的COPY脚本:

COPY INTO DEVELOPMENT.MY_TABLE
FROM @MYTestStage
FILE_FORMAT = (FORMAT_NAME = csv_format TYPE = CSV RECORD_DELIMITER = '|*|' FIELD_DELIMITER = '|#|' SKIP_HEADER = 1)
FORCE = TRUE;

2. 验证文件格式与实际内容匹配

确认CSV文件中的字段分隔符确实是|#|、记录分隔符确实是|*|。可以通过以下SQL预览文件内容,检查是否能正确拆分字段和行:

SELECT $1, $2, $3 FROM @MYTestStage/Source_File_1.csv (FILE_FORMAT => csv_format);

如果预览结果显示所有内容集中在一个字段里,说明分隔符设置和实际文件不匹配,需要调整为文件真实使用的分隔符。

3. 检查表头跳过设置

如果你的CSV文件没有表头行,SKIP_HEADER = 1会跳过第一行数据,若文件只有一行则会导致0条加载。可以临时将SKIP_HEADER改为0,重新执行COPY命令测试是否有数据加载,再根据实际情况调整。

4. 查看COPY操作的详细日志

执行COPY命令后,通过以下SQL查询复制历史,获取文件处理的详细信息(比如解析行数、过滤行数、错误原因):

SELECT * 
FROM TABLE(INFORMATION_SCHEMA.COPY_HISTORY(
    TABLE_NAME => 'DEVELOPMENT.MY_TABLE', 
    START_TIME => DATEADD('hour', -1, CURRENT_TIMESTAMP())
));

日志中的ROWS_PARSED、ROWS_LOADED、ERROR_MESSAGE字段会明确说明问题所在。

5. 确认文件路径与加载范围

虽然LIST命令显示文件存在,但可以尝试指定单个文件路径测试,排除路径匹配问题:

COPY INTO DEVELOPMENT.MY_TABLE
FROM @MYTestStage/Source_File_1.csv
FILE_FORMAT = (FORMAT_NAME = csv_format)
FORCE = TRUE;

内容的提问来源于stack exchange,提问作者ipeoples

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.12 13:50:17