使用 Python 将 Csv 文件写入 SQL Server 数据库中已有的表

Posted

技术标签:

【中文标题】使用 Python 将 Csv 文件写入 SQL Server 数据库中已有的表【英文标题】:Writing Csv file to already existing table in SQL Server database using Python 【发布时间】:2019-12-27 08:09:14 【问题描述】:

我试图将 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 (?, ?, ?, ?, ?, ?, ?, ?)", data)

DataError: ('22007', '[22007] [Microsoft][ODBC Driver 17 for SQL Server][SQL Server]从字符串转换日期和/或时间时转换失败。(241) (SQLExecDirectW)')

【问题讨论】:

【参考方案1】:

文件“”,第 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 = """插入笔记本电脑(ID、名称、价格、购买日期) 价值观 (10, 'ProductValues SP99', 6459, '2019-12-27') """

cursor = connection.cursor()
cursor.execute(mySql_insert_query)
connection.commit()

我的两分钱:最好将插入查询分配给变量,就像数据变量一样。

【讨论】:

在“cursor.execute(mySql_insert_query)”语句中出现语法错误 你能把你试过的代码和你收到的完整错误信息贴出来吗?

以上是关于使用 Python 将 Csv 文件写入 SQL Server 数据库中已有的表的主要内容,如果未能解决你的问题,请参考以下文章

python 如何将数据写入某个csv文件的特定位置?

sql 将数据写入CSV文件

Python入门教程第73篇 写入CSV文件

如何在python中使用多处理将df的内容写入csv文件

如何将列表列表写入 CSV 文件 Python?

如何用python将九九乘法表写入csv文件中?