Spark SQL中使用Merge更新含/列时如何转义斜杠?
解决Spark Merge语句中含/字符列名的语法错误
你的问题出在列名包含/特殊字符,Spark SQL解析器会把/当作语法符号而非列名的一部分,因此触发语法错误。
只需用**反引号`**将包含特殊字符的列名包裹起来,即可让解析器正确识别完整列名。修改后的代码如下:
query = """merge into dfFullView as t using dfIncView as s on t.col1 = s.col1 when matched then update set t.col1 = s.col1, t.`smr/v1` = s.`smr/v1` when not matched then insert(t.col1, t.`smr/v1`) values(s.col1, s.`smr/v1`)""" spark.sql(query)
关键修改点
- 将所有出现的
t.smr/v1改为t.smr/v1`` - 将所有出现的
s.smr/v1改为s.smr/v1``
这样处理后,SQL解析器会把smr/v1当作一个完整的列名解析,不会再把/识别为语法符号。
内容的提问来源于stack exchange,提问作者Siva Reddy
相关产品推荐
相关产品推荐

