如何通过VBA的ADODB连接Azure Databricks集群并操作数据库?
可以通过VBA的ADODB连接Azure Databricks并执行数据操作,具体实现方案如下:
前置准备
- 安装与你的Office位数(32/64位)匹配的Azure Databricks ODBC驱动,安装完成后可以在Windows ODBC数据源管理器的「驱动程序」选项卡中确认驱动名称。
- 获取Databricks集群连接信息:进入Databricks工作区对应集群的「JDBC/ODBC」配置页,记录以下参数:
- 服务器主机名
- HTTP路径
- 在用户设置中生成个人访问令牌(PAT,后续作为连接密码使用)
VBA连接实现
连接串将原来SQL Server的配置替换为Databricks专属配置即可,示例代码如下:
Sub DBRegister() Dim MDB As New ADODB.Connection Dim RS As New ADODB.Recordset Dim FD As ADODB.Field Dim SQL As String Dim w As Worksheet ' 连接串参数按实际情况替换 Dim connStr As String connStr = "Driver={Databricks ODBC Driver};" & _ "Host=你的集群主机名;" & _ "Port=443;" & _ "HTTPPath=你的HTTP路径;" & _ "UID=token;" & _ "PWD=你的个人访问令牌;" & _ "Schema=你要操作的数据库名;" & _ "SparkServerType=3;" & _ "ThriftTransport=2;" & _ "SSL=1;" ' 打开连接 MDB.Open connStr ' 后续数据操作逻辑和SQL Server场景一致,执行INSERT语句即可 ' 示例:插入单条数据 SQL = "INSERT INTO 表名(字段1,字段2) VALUES('值1', '值2')" MDB.Execute SQL ' 用完关闭连接 MDB.Close Set MDB = Nothing End Sub
工作表新增数据同步实现
要实现Excel插入新数据时自动同步,可以用工作表的Worksheet_Change事件触发插入逻辑:
- 打开目标工作表的代码编辑页,添加
Worksheet_Change事件监听 - 判断变更的单元格是否属于你要同步的数据区域,排除表头、空值等无效变更
- 读取变更行的字段值,拼接参数化INSERT语句执行,避免SQL注入风险
注意事项
- 连接前需要确保对应Databricks集群处于运行状态,集群终止时无法建立连接
- 个人访问令牌不要明文硬编码在VBA代码中,建议存入受保护的单元格或提示用户每次输入,避免泄露
- 如果需要批量插入大量数据,建议拼接多值INSERT语句,避免逐行执行影响效率
内容的提问来源于stack exchange,提问作者cfkc
相关产品推荐
相关产品推荐

