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

pyodbc导入CSV至Access报错‘不支持该对象类型’求排查方案

问题描述

2025年11月我仍可通过以下pyodbc SQL语句将CSV文件导入Access数据库表:

cursor.execute(f"""
INSERT INTO [{table_name}] ([Date], [Value], [Value2], [Year], [Month], [Day], [Value3])
SELECT [Date], [Value], [Value2], [Year], [Month], [Day], [Value3]
FROM [Text;Database={OUTPUT_PATH};HDR=YES].[{csv_file.name}]
""")
cnxn.commit()

但2025年12月运行同一代码时,ODBC Access驱动抛出错误:

Error: ('HY000', '[HY000] [Microsoft][ODBC Microsoft Access Driver] Operation is not supported for this type of object. (-1001) (SQLExecDirectW)')

环境信息:Python 3.13.9、pyodbc 5.3.0、MS Access数据库引擎2016、Windows 11,驱动字符串为r'DRIVER={Microsoft Access Driver (*.mdb, *.accdb)};'。

目前我用Pandas DataFrame+cursor.executemany()作为临时方案,但速度极慢,开启fast_executemany = True会导致Python内核崩溃。请问这是微软已停止支持该功能,还是可修复的机器问题?

分析与解决方案

这个问题大概率是机器环境变更导致的可修复问题,而非微软停止支持该功能(Access 2016引擎官方支持周期到2026年10月,这类核心导入功能不会突然取消)。以下是具体排查和修复方向:

1. 排查系统或引擎更新

12月前后可能安装了Windows累积更新或Access数据库引擎补丁,导致ODBC驱动对文本数据源的解析逻辑变化:

  • 查看Windows更新历史,回滚近期安装的Office/Access相关更新,测试是否恢复正常;
  • 重新下载安装MS Access数据库引擎2016完整版,覆盖现有安装,确保驱动文件未损坏。

2. 验证路径与权限

  • 确认OUTPUT_PATH是绝对路径,且路径中无中文、空格、特殊符号(ODBC文本驱动对特殊路径兼容性较差);
  • 检查Python进程对OUTPUT_PATH目录和CSV文件的读写权限,避免因权限不足导致驱动无法访问文件。

3. 调整连接字符串参数

在连接字符串中添加ExtendedAnsiSQL=1参数,强制驱动使用ANSI SQL标准解析文本数据源:

conn_str = r'DRIVER={Microsoft Access Driver (*.mdb, *.accdb)};DBQ=你的数据库路径;ExtendedAnsiSQL=1;'

4. 高效替代方案

如果上述方法无效,可使用Access原生导入功能替代,速度远快于executemany:

import win32com.client

access = win32com.client.Dispatch("Access.Application")
access.OpenCurrentDatabase("你的Access数据库路径")
access.DoCmd.TransferText(
    TransferType=0,  # acImportDelim
    TableName=table_name,
    FileName=csv_file.path,
    HasFieldNames=True
)
access.CloseCurrentDatabase()
access.Quit()

关于fast_executemany崩溃的问题

pyodbc 5.x版本与Python 3.13可能存在兼容性问题,可尝试降级pyodbc到4.0.39版本,或升级到最新测试版,排查是否解决内核崩溃问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.11 21:42:36