使用Pentaho向Snowflake加载数据时报表不存在错误该如何解决?
问题排查配置项清单
- 检查Pentaho中Snowflake JDBC连接的参数配置,确认是否开启了
quoted_identifier_ignore_case参数:如果该参数被设为true,SQL语句中带双引号的大写表名会被驱动自动转为小写,匹配不到已创建的大写标识符表,直接在JDBC连接串中追加"ed_identifier_ignore_case=false即可解决该类大小写问题。 - 核对Pentaho连接使用的Snowflake角色权限:确认该角色拥有
DEMO_DB、PUBLICSchema的USAGE权限,以及STG_DIMACTIVITY表的INSERT权限、@my_s3_stage阶段的读取权限。你在Snowflake控制台执行SQL所用的角色和Pentaho配置的连接角色大概率不是同一个,权限不足时Snowflake会返回表不存在的报错而非权限报错。 - 检查Pentaho执行SQL的组件配置:如果你使用的是「执行SQL脚本」或「表输出」组件,确认没有勾选「使用连接默认的库/Schema」类选项,避免组件自动覆盖你SQL中写好的全限定表名。
- 调整SQL写法测试:将表名部分的双引号移除,使用全大写的全限定名执行,修改后语句如下:
copy into DEMO_DB.PUBLIC.STG_DIMACTIVITY from @my_s3_stage FILES = ('MB_ACTIVITY.txt_0') --pattern='.*MB_ACTIVITY.txt_0.*' file_format = (type = csv field_delimiter = '|' skip_header = 1) force=true;
- 确认JDBC驱动兼容性:Pentaho 7.1版本适配的Snowflake JDBC驱动版本为3.12.x分支,若你使用了更高版本的驱动,可能存在标识符解析异常,替换为对应兼容版本驱动即可。
内容的提问来源于stack exchange,提问作者swati attri
相关产品推荐
相关产品推荐

