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

为何SSMS能使用本地未安装的驱动导入.mdb?如何在Python中复用?

问题背景

我有一个存储为.mdb文件的MS Access数据库,通过Microsoft SQL Server Management Studio(SSMS)将其完整导入现有SQL数据库,操作步骤如下:

  • 右键点击数据库名称,选择「工具」→「导入数据」
  • 选择Microsoft Jet驱动并选中目标.mdb文件
  • 选择目标数据库并命名架构

执行时的摘要信息(已移除敏感信息,实际为直接执行流程而非保存至文件):

Click Finish to perform the following actions: 

Source Location : C:\Users\myname\directorypaths\accessdatabasefilename.mdb
Source Provider : Microsoft.Jet.OLEDB.4.0
Destination Location : servername
Destination Provider : SQLNCLI11

Copy rows from `Table1` to [SchemaName].[Table1]
The new target table will be created.
Copy rows from `Table2` to [SchemaName].[Table2]
The new target table will be created.
Copy rows from `Table3` to [SchemaName].[Table3]
The new target table will be created.
Copy rows from `Table4` to [SchemaName].[Table4]
The new target table will be created.

The package will be saved to the package file "C:\Users\myname\Documents\myfilename.dtsx". 
The package will not be run immediately. 

Provider mapping file : C:\Program Files (x86)\Microsoft SQL Server Management Studio 18\Common7\IDE\CommonExtensions\Microsoft\SSIS\150\MappingFiles\JetToMSSql9.xml

我希望直接在Python中提取.mdb文件的数据进行处理,而非通过SQL Server,但pyodbc仅列出以下驱动:

['SQL Server',
 'SQL Server Native Client 11.0',
 'ODBC Driver 17 for SQL Server']
核心疑问
  1. 为何SSMS会列出本地未安装的驱动?
  2. 它是如何不依赖该驱动将.mdb数据导入SQL数据库的?
  3. 我能否利用此方法在Python中获取.mdb数据?
解答

1. SSMS为何能列出未安装的驱动?

SSMS的导入数据功能基于SQL Server Integration Services(SSIS)组件,它会预先枚举所有官方支持的数据源驱动/提供程序,该列表是SSIS内置的配置项,并非检测本地已安装驱动后生成的,所以会出现本地未安装却能看到的情况。

2. SSMS如何完成.mdb数据导入?

它并非完全不依赖驱动,只是驱动可能随SSMS/SSIS静默安装了:

  • 若你在64位系统上运行SSMS,而Jet驱动仅32位,SSIS会自动调用32位执行引擎(DTEXEC.exe的32位版本),SSMS安装时会附带32位Jet驱动组件用于兼容,只是你没手动安装过,也不会在系统ODBC数据源管理器中显示。
  • 本质上还是依赖对应驱动完成数据读取与导入,只是驱动的安装和调用被SSIS封装了。

3. 能否在Python中复用该方法?

不行。SSIS的驱动调用逻辑是封装在自身运行时中的,没有开放给Python直接调用的接口。要在Python中读取.mdb文件,有两种可行方案:

  • 安装ACE OLEDB驱动(支持32/64位,兼容.mdb和.accdb文件),或者32位的Microsoft Jet OLEDB 4.0驱动(需搭配32位Python),之后用pyodbc或win32com.client连接读取。
  • 使用跨平台第三方库mdbtools,通过pymdbtools等封装库读取.mdb文件内容,无需安装微软驱动。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.13 00:37:40