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

如何配置Azure Data Factory遇Snowflake错误时继续加载

在Azure Data Factory中配置Snowflake复制活动的ON_ERROR选项以处理字符串过长错误

我在使用Azure Data Factory (ADF) 向Snowflake复制数据时,遇到了字符串过长导致的截断错误,错误详情如下:

ErrorCode=UserErrorOdbcOperationFailed,'Type=Microsoft.DataTransfer.Common.Shared.HybridDeliveryException,Message=ERROR [22000] String '<div class="ExternalClassFEF297CEF4014BF7AC93A5068BA8801E"><div style="font-family&#58;Calibri, Arial' is too long and would be truncated
File '912f8683-d5da-48ce-b009-493f9b2b39b1/SnowflakeImportCopyCommand/Commentary6ec0c04003c6aa892ecde458ae63679bc746fc7a2bed3859b1a395d4b1f80279.txt', line 2, character 0
Row 2, column "COMMENTARY"["COMMENTARY":10]
If you would like to continue loading when an error is encountered, use other values such as 'SKIP_FILE' or 'CONTINUE' for the ON_ERROR option. For more information on loading options, please run 'info loading_data' in a SQL client.,Source=Microsoft.DataTransfer.Runtime.GenericOdbcConnectors,''Type=System.Data.Odbc.OdbcException,Message=ERROR [22000] String '<div class="ExternalClassFEF297CEF4014BF7AC93A5068BA8801E"><div style="font-family&#58;Calibri, Arial' is too long and would be truncated
File '912f8683-d5da-48ce-b009-493f9b2b39b1/SnowflakeImportCopyCommand/Commentary6ec0c04003c6aa892ecde458ae63679bc746fc7a2bed3859b1a395d4b1f80279.txt', line 2, character 0
Row 2, column "COMMENTARY"["COMMENTARY":10]
If you would like to continue loading when an error is encountered, use other values such as 'SKIP_FILE' or 'CONTINUE' for the ON_ERROR option. For more information on loading options, please run 'info loading_data' in a SQL client.,Source=SnowflakeODBC_sb64.dll,'

经分析,该错误由COMMENTARY列字符串长度超过Snowflake字段定义导致。相同数据复制到Azure SQL DB可正常完成,但Snowflake触发截断错误。以下是配置ON_ERROR选项实现遇错继续加载的具体方法:

方法1:通过Snowflake接收器的额外复制选项配置

  1. 打开ADF中的目标复制活动,切换到接收器选项卡
  2. 在Snowflake接收器设置区域,找到额外复制选项模块
  3. 点击添加按钮,新增键值对:
    • 键:ON_ERROR
    • 值:根据需求选择CONTINUE(跳过错误行,继续加载其余数据)或SKIP_FILE(跳过包含错误的整个文件)

    补充:还可使用SKIP_FILE_n(当文件内错误行数超过n时跳过),默认值为ABORT_STATEMENT(遇错即终止)

方法2:使用预复制脚本设置会话级策略

如果需要在每次复制任务执行前统一配置错误处理规则,可在复制活动的预复制脚本中输入:

ALTER SESSION SET ON_ERROR = 'CONTINUE';

该脚本会在数据加载前修改Snowflake会话的错误处理策略,适用于所有后续复制操作。

额外注意事项

  • CONTINUE模式下,错误行不会被加载,但会记录到Snowflake的COPY_HISTORY视图中,可通过查询该视图排查问题
  • SKIP_FILE模式会直接跳过有错误的文件,适合错误文件占比低、对单文件完整性要求不高的场景
  • 若要彻底解决截断问题,建议调整Snowflake表中COMMENTARY列的数据类型长度(例如从VARCHAR(10)改为VARCHAR(1000)或TEXT)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.05 00:53:23