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

如何通过PYODBC复制Access数据库表?报错求助

问题描述

我正在使用32位Python搭配32位Microsoft Access,已成功连接数据库并创建游标:

conn = pyodbc.connect(r'Driver={Microsoft Access Driver (*.mdb, *.accdb)};DBQ=P:\path\database.accdb;')
c = conn.cursor()

随后读取了表tbl的数据:

c.execute('select * from tbl')
tbl = c.fetchall()

但执行以下语句复制表时出现编程错误:

query =  'CREATE TABLE tbl2 LIKE tbl'
c.execute(query)

错误信息:

ProgrammingError: ('42000', '[42000] [Microsoft][ODBC Microsoft Access Driver] Syntax error in CREATE TABLE statement. (-3551) (SQLExecDirectW)')

我刚接触PYODBC,认为这是基础SQL语句,请问问题出在哪里?

问题原因与解决方法
  • 问题根源:Microsoft Access的SQL语法不支持CREATE TABLE ... LIKE这种写法,这是MySQL等其他数据库的语法,Access有专属的表复制语法。
  • 解决方法1:复制表结构+数据
    使用Access标准的SELECT INTO语句,既能创建新表又能复制原表数据:
    query = 'SELECT * INTO tbl2 FROM tbl'
    c.execute(query)
    conn.commit()  # 必须提交事务才能完成表创建
    
  • 解决方法2:仅复制表结构(不含数据)
    若只需要表结构不需要数据,添加WHERE 1=0过滤所有行即可:
    query = 'SELECT * INTO tbl2 FROM tbl WHERE 1=0'
    c.execute(query)
    conn.commit()
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 18:50:26