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

使用存储过程从SFTP向Snowflake Stage加载数据时出现语法错误

Snowflake加载SFTP数据至Stage时unexpected 'sftbdir'错误排查与解决

问题概述

将SFTP数据加载到预创建的Snowflake Stage过程中,执行自定义存储过程时持续触发unexpected 'sftbdir'错误。已尝试用双引号包裹含空格的文件名,但问题未解决。操作流程为:创建文件格式 → 创建Stage → 调用public.load_from_sftp存储过程。

已执行代码

CREATE OR REPLACE FILE FORMAT GGG_COMMON_BASE.pipo_xref_csv
 type = 'csv',
 COMPRESSION = 'AUTO'
 FIELD_DELIMITER = ',',
 SKIP_HEADER = 1, -- 含表头设为1,无表头设为0
 SKIP_BLANK_LINES = TRUE,
 DATE_FORMAT = 'AUTO';

CREATE OR REPLACE STAGE GGG_COMMON_BASE.PIPO_XREF_STAGE file_format = pipo_xref_csv; 

CALL public.load_from_sftp(''@ggg_common_base.pipo_xref_stage'',''sftpdir'',''/dorp_rebranding'',''"Phase In Phase Out XReference File - SKU Creation"'',''b2bmft.xcompany.com'',2223);

错误原因分析

  1. 参数转义错误:CALL语句中使用了双单引号''(SQL中用于转义单引号),但此处参数无需嵌套单引号,多余的转义导致SQL解析器无法正确识别参数边界,将sftpdir误判为语法错误元素。
  2. 文件名转义错误:使用了HTML转义符"而非Snowflake SQL支持的单引号包裹文件名,导致文件名参数解析异常。

解决步骤

1. 修正CALL语句参数格式

移除多余的双单引号,直接用单引号包裹所有参数,文件名保留空格无需额外转义:

CALL public.load_from_sftp('@ggg_common_base.pipo_xref_stage', 'sftpdir', '/dorp_rebranding', 'Phase In Phase Out XReference File - SKU Creation', 'b2bmft.xcompany.com', 2223);

2. 验证存储过程参数定义

确认load_from_sftp存储过程的参数顺序与传入值完全匹配,避免因参数错位导致的语法解析错误。例如检查sftpdir是否为存储过程预期的参数类型(如SFTP用户名、目录别名等)。

3. 检查Stage配置(若为外部Stage)

确保GGG_COMMON_BASE.PIPO_XREF_STAGE已正确关联SFTP集成,包含必要的认证信息(如私钥、用户名),避免因连接配置缺失导致的参数解析异常。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.15 04:40:14