使用JDBC连接SQL Server时PySpark CTE查询报错问题
PySpark JDBC连接SQL Server时CTE查询报错的解决办法
问题现象
使用PySpark通过JDBC连接Microsoft SQL Server,执行包含WITH子句(CTE)的查询时触发报错:
com.microsoft.sqlserver.jdbc.SQLServerException: Incorrect syntax near the keyword 'WITH'
排查过程与结论
- 已排查并修正JOIN条件符号、CTE语法格式等问题
- 确认JDBC连接要求的
() as _包裹是必要配置 - 测试验证不含CTE的简单查询可正常运行,初步怀疑包裹逻辑与CTE存在冲突
- 最终确认:当前使用的SQL Server JDBC驱动不支持CTE语法,需替换为无WITH子句的实现方式
报错的CTE查询代码示例
query = """( WITH table_1 (code_1) AS ( SELECT code_1 FROM my_database_table_1 ) SELECT code_1 FROM table_1 ) as _ """
可正常运行的非CTE查询代码示例
query = """( SELECT code_1 FROM my_database_table_1 ) as _ """
内容的提问来源于stack exchange,提问作者Matheus Schaly
相关产品推荐
相关产品推荐

