You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Databricks SQL连接器中访问含特殊字符的Schema?

解决Azure Databricks访问含反斜杠的SQL Server Schema问题

方法1:直接在dbtable参数中指定完整带括号的表路径

无需单独设置schemaname,将数据库、schema、表名组合成带方括号的格式直接传给dbtable,彻底规避转义问题:

hostname = "XXXX"
username = "XXXX"
password = "XXXX"
# 用双反斜杠转义,或使用Python原始字符串r"[DB_NAME].[XX\YY].[xx]"
full_table_name = "[DB_NAME].[XX\\YY].[xx]"

df_nbpl = (spark.read
       .format("sqlserver")
       .option("host", hostname)
       .option("user", username)
       .option("trustServerCertificate", "True")
       .option("encrypt", "True")
       .option("password", password)
       .option("dbtable", full_table_name)
       .load()
    )

方法2:调整schemaname的转义规则

若坚持分开设置schemaname和tablename,可尝试两种转义方式:

hostname = "XXXX"
username = "XXXX"
password = "XXXX"
# 方式A:使用Python原始字符串,避免自动转义
schemaname = r"XX\YY"
# 方式B:用四重反斜杠,适配Python+JDBC的双层转义
# schemaname = "XX\\\\YY"
tablename = "xx"

df_nbpl = (spark.read
       .format("sqlserver")
       .option("host", hostname)
       .option("user", username)
       .option("trustServerCertificate", "True")
       .option("encrypt", "True")
       .option("password", password)
       .option("database", databasename)
       .option("schemaname", schemaname)
       .option("dbtable", tablename)
       .load()
    )

方法3:通过query参数执行自定义SQL

如果上述方法仍无效,直接用query参数执行查询,完全绕开schemaname的解析逻辑:

hostname = "XXXX"
username = "XXXX"
password = "XXXX"
# 同样注意反斜杠转义,或用原始字符串
query = "SELECT * FROM [DB_NAME].[XX\\YY].[xx]"

df_nbpl = (spark.read
       .format("sqlserver")
       .option("host", hostname)
       .option("user", username)
       .option("trustServerCertificate", "True")
       .option("encrypt", "True")
       .option("password", password)
       .option("query", query)
       .load()
    )

内容的提问来源于stack exchange,提问作者Bjarne Pedersen

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.29 02:07:05