python - 使用 Python 将 Csv 文件写入 SQL Server 数据库中已有的表
问题描述
我试图将 CSV 文件插入到 SSMS 数据库表中已经存在的表中。我的数据中有一个数据列。但是当我尝试插入数据时,我不断收到此错误。请告诉我我在哪里做错了,因为服务器连接和从数据库中提取数据都很好。下面是代码。
with open("combine.csv", encoding="utf8") as f:
csvreader = csv.reader(f)
csvdata = []
for row in csvreader:
csvdata.append(row)
print(csvdata)
for row in csvdata:
# Insert a row of data
print(row)
if len(row)>=8:
data = [row[0],row[1],row[2],row[3],row[4],row[5],row[6],row[7]]
cursor.execute("INSERT INTO BILLING_COPY (DATE, DEPARTMENT_NUMBER, DEPARTMENT_NAME, DIVISION_CODE, DIVISION_NAME, O_T_AMT, R_AMT, U_AMT ) VALUES (?, ?, ?, ?, ?, ?, ?, ?)", data)
错误:
文件“”,第 7 行,在
cursor.execute("INSERT INTO BILLING_COPY (DATE, DEPARTMENT_NUMBER, DEPARTMENT_NAME, DIVISION_CODE, DIVISION_NAME, O_T_AMT, R_AMT, U_AMT) VALUES (?, ?, ?, ?, ?, ?, ?, ? )“, 数据)DataError: ('22007', '[22007] [Microsoft][ODBC Driver 17 for SQL Server][SQL Server]从字符串转换日期和/或时间时转换失败。(241) (SQLExecDirectW)')
解决方案
文件“”,第 7 行,在 cursor.execute("INSERT INTO BILLING_COPY (DATE, DEPARTMENT_NUMBER, DEPARTMENT_NAME, DIVISION_CODE, DIVISION_NAME, O_T_AMT, R_AMT, U_AMT) VALUES (?, ?, ?, ?, ?, ?, ?, ? ) ", 数据)
我认为您在 VALUES(?,?,? etc) 中提到的数据类型不是正确的有效数据类型,请尝试将其用作 %d 或 %s
这是一些示例: mySql_insert_query = """INSERT INTO Laptop (Id, Name, Price, Purchase_date) VALUES (10, 'ProductValues SP99', 6459, '2019-12-27') """
cursor = connection.cursor()
cursor.execute(mySql_insert_query)
connection.commit()
我的两分钱:最好将插入查询分配给一个变量,就像数据变量一样。
推荐阅读
- java - Jdeveloper 11.1.1.4.0 11c 的 Git 扩展
- python - 使用来自两个单独的 pandas 数据帧的列绘制多个重叠直方图
- javascript - 当单击模式菜单外部关闭功能处于活动状态时,模式菜单链接不起作用
- javascript - 从承诺结果运行逻辑
- python - 使用 pynput 时无法将字符串转换为元组
- python - kivy中的简单动画
- sql - 避免表名和关键字 psql 之间的冲突
- firebase - Firebase远程配置,随机百分位用户的“AND条件”
- java - 我在使用 javaFX 时遇到问题,errormessage: java.lang.module.FindException: Module javafx.base not found
- django - 在 Django Rest Framework 中的一次 API 调用中更新用户和扩展用户配置文件