如何通过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
相关产品推荐
相关产品推荐

