当前位置: 首页 > 面试题库 >

使用python将CSV文件写入SQL Server数据库

倪炎彬
2023-03-14
问题内容

嗨,我正在尝试使用python将csv文件写入SQL
Server数据库中的表中。传递参数时遇到错误,但是手动进行操作时不会遇到任何错误。这是我正在执行的代码。

cur=cnxn.cursor() # Get the cursor
csv_data = csv.reader(file(Samplefile.csv')) # Read the csv
for rows in csv_data: # Iterate through csv
    cur.execute("INSERT INTO MyTable(Col1,Col2,Col3,Col4) VALUES (?,?,?,?)",rows)
cnxn.commit()

错误:pyodbc.DataError :(“ 22001”,“ [22001] [Microsoft] [ODBC SQL Server驱动程序]
[SQL Server]字符串或二进制数据将被截断。(8152)(SQLExecDirectW); [01000] [Microsoft] [ ODBCSQL Server驱动程序] [SQL Server]该语句已终止。(3621)’)

但是,当我手动插入值时。工作正常

cur.execute("INSERT INTO MyTable(Col1,Col2,Col3,Col4) VALUES (?,?,?,?)",'A','B','C','D')

我确保数据库中有TABLE,数据类型与我传递的数据一致。连接和光标也正确。行的数据类型为“列表”


问题答案:

考虑动态构建查询,以确保占位符的数量与表和CSV文件格式匹配。然后,只需确保您的表和CSV文件正确无误,而不必检查您?在代码中是否键入了足够的占位符。

以下示例假定

  1. CSV文件在第一行中包含列名称
  2. 连接已建立
  3. 档案名称为 test.csv
  4. 表名是 MyTable
  5. Python 3


    with open (‘test.csv’, ‘r’) as f:
    reader = csv.reader(f)
    columns = next(reader)
    query = ‘insert into MyTable({0}) values ({1})’
    query = query.format(‘,’.join(columns), ‘,’.join(‘?’ * len(columns)))
    cursor = connection.cursor()
    for data in reader:
    cursor.execute(query, data)
    cursor.commit()

如果文件中不包含列名:

...
with open ('test.csv', 'r') as f:
    reader = csv.reader(f)
    data = next(reader) 
    query = 'insert into MyTable values ({0})'
    query = query.format(','.join('?' * len(data)))
    cursor = connection.cursor()
    cursor.execute(query, data)
    for data in reader:
        cursor.execute(query, data)
    cursor.commit()


 类似资料:
  • 我正在尝试将以下数据写入csv文件。这些数据是employdetails name1-surname1-place1 名称4-surname4-place4 我希望输出在CSV文件上,一个在另一个下面,在单独的行上。 我写了下面的代码 -KD

  • 本文向大家介绍Python将列表数据写入文件(txt, csv,excel),包括了Python将列表数据写入文件(txt, csv,excel)的使用技巧和注意事项,需要的朋友参考一下 写入txt文件 写入csv文件 写入excel文件 以上所述是小编给大家介绍的Python将列表数据写入文件(txt, csv,excel)详解整合,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回

  • 我在pandas中有一个数据帧,我想把它写到CSV文件中。我使用的是: 并得到错误: 有没有什么方法可以很容易地解决这个问题(例如,我的数据帧中有unicode字符)?还有,有没有一种方法可以使用“to-tab”方法(我认为不存在)写入以制表符分隔的文件,而不是CSV?

  • 问题内容: 我有一个CSV文件,我想使用Python将此文件批量导入到sqlite3数据库中。该命令是“ .import .....”。但似乎不能这样工作。谁能给我一个在sqlite3中做事的例子吗?我正在使用Windows,以防万一。谢谢 问题答案:

  • 我正试图用C#语言逐行写入一个文件。这是我的功能 整个函数在一个循环中运行,每一行都应该写入文件。在我的例子中,下一行覆盖现有行,最后,我在csv文件中只得到一条记录,这是最后一条。如何写入文件中的所有行?

  • 问题内容: 我有一个pandas数据框,我想将其写入CSV文件。我正在使用以下方法: 并得到错误: 有什么方法可以轻松解决此问题(即我的数据框中有Unicode字符)吗?有没有一种方法可以使用例如“ to-tab”方法(我认为不存在)写入制表符分隔文件而不是CSV? 问题答案: 要用制表符分隔,可以使用参数: 要使用特定的编码(例如),请使用参数: