我正在尝试使用以下代码从CSV将数据插入到SQL表中:
with requests.get(reportURL) as csvfile:
decoded_content=csvfile.content.decode('utf-8')
reader = csv.reader(decoded_content.splitlines(), delimiter=',')
columns = next(reader,None)
query = "INSERT INTO SQL_TABLE({0}) VALUES ({1})"
query = query.format('[{0}]'.format('],['.join(columns)),','.join('?'*len(columns)))
cursor = cnxn.cursor()
cursor.execute(query, columns)
for data in reader:
cursor.execute(query, data)
cursor.commit()
但是,我收到以下错误代码:
cursor.execute(query,columns)pyodbc.DataError:('22007','[22007] [Microsoft] [SQL Server的ODBC驱动程序13] [SQL Server]转换 从字符串转换日期和/或时间时失败。 (241) (SQLExecDirectW)')
我想知道问题是数据是作为字符串而不是日期传来的吗?日期是第一列,所以我不确定是否有任何其他列会遇到类似的问题。 列如下:
日期|广告商|活动|广告组|展示
数据类型:
datetime | varchar | varchar | varchar | bigint
感谢您的帮助!
答案 0 :(得分:1)
cursor.execute(query, columns)
您正尝试使用列 names 作为数据执行INSERT语句。 SQL Server抱怨是因为您试图插入值'日期'进入datetime
列。删除该语句应该可以解决问题。
答案 1 :(得分:0)
我不知道它是否仍然有用,但是在尝试按特定时间戳记的日期过滤数据库时出现了此错误。 我发现问题出在参考点的数据格式,像这样:'2020-07-26 12:07:22.263000'
解决方案是在几秒钟后使用str(我的日期)[:19]删除访问数据