如何通过Shell脚本调用Snowsql执行SQL文件中的Snowflake存储过程
解决方案
SnowSQL 原生提供了-f参数用于执行本地指定的SQL文件,用法和psql的-f参数完全一致,直接调整你的脚本即可。
修正后的完整Shell脚本如下:
#!/bin/bash BASE_DIR=/opt/analytics JOBS_DIR=$BASE_DIR/jobs SQL_FILE_PATH="$JOBS_DIR/sql/durations.sql" # 调用snowsql执行指定SQL文件 snowsql -f "$SQL_FILE_PATH"
注意事项
- 原脚本的shebang行有误,需要修正为
#!/bin/bash,否则可能出现脚本执行异常 - 请确保你的
durations.sql文件内容正确,建议在文件开头补充必要的上下文声明(如使用的角色、数据库、Schema等),避免存储过程找不到的报错,SQL文件示例:
-- 按需补充你的环境上下文配置 USE ROLE ANALYTICS_ROLE; USE DATABASE YOUR_DB; USE SCHEMA YOUR_SCHEMA; -- 调用存储过程 CALL calculateduration();
- 如果执行时需要排查问题,可以在snowsql命令中添加调试参数,比如
snowsql -f "$SQL_FILE_PATH" -o verbose=true可以打印详细执行日志,方便定位错误
内容的提问来源于stack exchange,提问作者Djabone
相关产品推荐
相关产品推荐

