在 Azure Databricks jdbc 连接中转义密码

问题描述 投票:0回答:0

我正在尝试通过 azure databricks 中的小部件传递一个密码,其中有很多标点符号。这个过程从 Azure 数据工厂调用,它似乎可以很好地传递变量。这就是我传递内容并配置相关连接信息以供以后使用 SQL 代码导出的方式:

%python
#Get variables to write to DB

input_sql_conn_string = dbutils.widgets.get("dest_sql_server_url")
input_db_name = dbutils.widgets.get("dest_db_name")
input_dest_username = dbutils.widgets.get("dest_username")
input_dest_password = dbutils.widgets.get("dest_password")
input_dest_table_schema = dbutils.widgets.get("dest_table_schema")
input_dest_table_name = dbutils.widgets.get("dest_table_name")

dest_table_full = input_dest_table_schema + "." + input_dest_table_name

#Configure whole connection string
url = f"jdbc:sqlserver://{input_sql_conn_string}:1433;database={input_db_name};user={input_dest_username};password={input_dest_password}"

#Set conf variables so they are accessible by SQL code
spark.conf.set("var.python_sql_url", url)
spark.conf.set("var.python_dest_table", dest_table_full)
spark.conf.set("var.python_username", input_dest_username)
spark.conf.set("var.python_password", input_dest_password)

我执行了一堆在这里不重要的 SQL 任务,然后尝试使用传入的信息导出到 Azure SQL 表:

CREATE TEMPORARY VIEW jdbcTable
USING org.apache.spark.sql.jdbc
OPTIONS (
  url ${var.python_sql_url},
  dbtable ${var.python_dest_table},
  user ${var.python_username},
  password ${var.python_password}
);

INSERT INTO TABLE jdbcTable
SELECT m.eventId, m.locationId, m.occurredOn, m.sequenceNumber, m.eventType
FROM unified.events.location m

我收到以下错误,表明密码字符串有问题。似乎密码中有一堆标点符号正在填充 SQL 加载:

如何转义这些字符?或者让字符串中的密码OK被解析?

python jdbc azure-sql-database azure-databricks
© www.soinside.com 2019 - 2024. All rights reserved.