【发布时间】:2018-02-15 06:56:33
【问题描述】:
我正在尝试使用以下代码将数据从 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][ODBC Driver 13 for SQL Server][SQL Server]转换 从字符串转换日期和/或时间时失败。 (241) (SQLExecDirectW)')
我想知道问题是否在于数据是作为字符串而不是日期传递的?日期是第一列,所以我不确定其他列是否会遇到类似问题。 栏目如下:
日期 |广告商 |活动 |广告组 |展示次数
数据类型:
日期时间 |变量 |变量 |变量 |大整数
感谢您的帮助!
【问题讨论】:
-
您的日期在 csv 数据中是如何表示的?
-
> 2017 年 9 月 5 日 |广告商 1 |活动 1 |广告组 1 | 125 没有引号,如图所示。
-
日期是
m/d/yyyy,还是d/m/yyyy? -
m/d/yyyy,这就是它在csv中的显示方式,并且似乎在sql数据中表示。 -
在您的 SQL 中,如果您将
VALUES (?, ?, ?, ?)更改为VALUES (CONVERT(datetime, ?, 101), ?, ?, ?)会怎样?
标签: python sql-server database csv pyodbc