Pyodbc跨Access数据库复制表报错:查询值与目标字段数量不匹配
问题分析与解决
你的代码存在明显的SQL语法错误,这是导致报错的直接原因,和Pyodbc本身的跨库支持无关。
错误点:跨库INSERT INTO的IN子句格式错误
你写的SQL语句中,IN '' ';database=C:\DB2.accdb' 格式完全不符合Access ODBC的语法规范,这种错误写法会让数据库无法正确识别目标数据库和表结构,进而误判为“字段数量不匹配”(也就是你看到的21S01错误)。
修正后的SQL语句
针对Access ODBC的跨库插入,有两种正确的写法:
写法1:直接指定目标数据库路径
INSERT INTO Tab1 IN 'C:\DB2.accdb' SELECT Col1, Col2 FROM Tab1
写法2:使用连接字符串格式(需用方括号包裹)
INSERT INTO Tab1 IN '[;database=C:\DB2.accdb]' SELECT Col1, Col2 FROM Tab1
额外验证点
虽然你说表结构一致,但要确认:目标表Tab1的字段数量和顺序,和你SELECT的Col1, Col2完全对应,或者目标表中未被选中的字段允许为空值,避免后续出现类似的字段匹配问题。
内容的提问来源于stack exchange,提问作者Honzik
相关产品推荐
相关产品推荐

