使用AWS Glue中PySpark查询Snowflake含特殊字符表时SQL编译错误的解决咨询
解决Snowflake带特殊字符表名的SQL编译错误
你判断的完全正确,这个SQL编译错误确实是因为你的表名里包含了连续减号(--)这类特殊字符导致的。Snowflake会把--识别为SQL注释的起始标记,这就导致你的查询语句被提前截断,自然会抛出“意外遇到
要解决这个问题,你只需要在查询语句中用双引号把带特殊字符的表名包裹起来就行——这是Snowflake处理特殊标识符的标准方式:
# 修改查询语句,用双引号包裹表名 query=f'select * from "{table}"'
或者你也可以用转义双引号的写法(外层用双引号时):
query=f"select * from \"{table}\""
这样Snowflake就会把整个"{table}"解析成完整的表名,而不会把--当作注释开头来处理。
另外补充两点注意事项:
- 如果你的数据库名或 schema 名也包含特殊字符,同样需要用双引号分别包裹,比如
"MY_DB"."MY_SCHEMA"."{table}" - 如果你创建表时是用双引号定义的大小写敏感名称,包裹时要严格匹配表名的大小写;如果是默认创建的(不区分大小写),用双引号包裹时转成大写也能正常识别,但建议和实际表名保持一致
内容的提问来源于stack exchange,提问作者cloud_hari
相关产品推荐
相关产品推荐

