07002 [Microsoft][ODBC SQL Server Driver]COUNT 字段不正确或语法错误

Posted

技术标签:

【中文标题】07002 [Microsoft][ODBC SQL Server Driver]COUNT 字段不正确或语法错误【英文标题】:07002 [Microsoft][ODBC SQL Server Driver]COUNT field incorrect or syntax error 【发布时间】:2016-07-09 09:20:20 【问题描述】:

我正在编写一些简单的 Python 代码来从 CSV 文件中提取数据并将其发送到 SQL Server 数据库。但我得到这个 07002 COUNT 字段不正确或语法错误。 CSV 文件有多个值,如果我只发送一行数据,它会很好地插入。问题在于 CSV 文件中有多个值。任何帮助表示赞赏!

这是我的代码:

import_data = []
for csvFile in glob.glob("*.csv"):
    with open(csvFile, 'r') as f:
        reader = csv.reader(f)<br>
        next(reader, None)#This skips the headers.
        import_data = [tuple(line) for line in csv.reader(f)]

将数据从 CSV 文件插入 SQL Server

cur.executemany("""INSERT INTO dbo.currentobservations(STID,NAME,ST,LAT,LON,YR,MO,DA,HR,MI,TAIR,TDEW,RELH,CHIL,HEAT,WDIR,WSPD,WMAX,PRES,TMAX,TMIN,RAIN) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)""", import_data)

#Here is the error message I am getting:
Traceback (most recent call last):
  File "E:\Python3\Programs\sqlservermesonetcsv.py", line 40, in <module>
    cur.executemany("""INSERT INTO dbo.currentobservations(STID,NAME,ST,LAT,LON,YR,MO,DA,HR,MI,TAIR,TDEW,RELH,CHIL,HEAT,WDIR,WSPD,WMAX,PRES,TMAX,TMIN,RAIN) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)""", import_data)
  File "E:\Python3\lib\site-packages\pypyodbc.py", line 1671, in executemany
    self.execute(query_string, params, many_mode = True)
  File "E:\Python3\lib\site-packages\pypyodbc.py", line 1605, in execute
    self.execdirect(query_string)
  File "E:\Python3\lib\site-packages\pypyodbc.py", line 1631, in execdirect
    check_success(self, ret)
  File "E:\Python3\lib\site-packages\pypyodbc.py", line 986, in check_success
    ctrl_err(SQL_HANDLE_STMT, ODBC_obj.stmt_h, ret, ODBC_obj.ansi)
  File "E:\Python3\lib\site-packages\pypyodbc.py", line 966, in ctrl_err
    raise DatabaseError(state,err_text)
pypyodbc.DatabaseError: ('07002', '[07002] [Microsoft][ODBC SQL Server Driver]COUNT field incorrect or syntax error')

【问题讨论】:

【参考方案1】:

您的表格有 22 列。必须为您的 ODBC sql 服务器驱动程序行提供正好 22 个元素。

也许 .csv 中的某些行有 23 个或更多条目。然后你可以尝试传递line[:22] 来截断尾随元素。

如果 .csv 中的某些行的条目少于 22 个,则需要在它们的末尾添加合适的默认值。

【讨论】:

以上是关于07002 [Microsoft][ODBC SQL Server Driver]COUNT 字段不正确或语法错误的主要内容,如果未能解决你的问题,请参考以下文章

07002 [Microsoft][ODBC SQL Server Driver]COUNT 字段不正确或语法错误

RODBC 与 ms-access 错误 07002 17 [Microsoft][ODBC Microsoft Access Driver]COUNT 字段不正确

COUNT 字段不正确或语法错误 (0) (SQLExecDirectW)')

Microsoft OLE DB Provider for ODBC Drivers 错误 '80004005' [Microsoft][ODBC

odbc_exec():SQL 错误:[Microsoft][ODBC Microsoft Access Driver] 参数太少。预期 1.,SQLExecDirect 中的 SQL 状态 0700

odbc_exec():SQL 错误:[Microsoft][ODBC Microsoft Access Driver] 查询表达式中的语法错误(缺少运算符)