CSV 数据在通过 Python 上传到 SQL table 时导致错误

CSV data causes error when uploading to SQL table via Python

所以最近几天我一直在努力解决这个问题。我需要将大约 25 列和 50K 行的 CSV 文件上传到 SQL 服务器 table (zzzOracle_Extract) 中,其中还包含 25 列,相同的列名和相同的顺序。

这是 CSV 文件中一行的样子:

['M&M OPTICAL SHOP', '3001211', 'SHORE', '*', 'PO BOX 7891', '', '', '', 'GUAYNABO', 'GUAYNABO', 'PR', '0090', 'United States', '24-NSH RETAIL CUSTOMER', 'SH02-SHORE COLUMN 2', '3001211', '*', '*', '*', '3001211744-BILL_TO', '', '', '', '', 'RACHAEL']

所以总共有 25 列,其中一些值是空白的。也许这会导致错误。这是我的代码:

import csv
import pymssql

conn = pymssql.connect(
    server="xxxxxxxxxx",
    port = 2433,
    user='SQLAdmin',
    password='xxxxx',
    database='NasrWeb'
)

with open('cleanNVG.csv','r') as f:
    reader = csv.reader(f)
    columns = next(reader)
    query = 'insert into dbo.zzzOracle_Extract({0}) Values({1})'
    query = query.format(','.join(columns),','.join('?' * len(columns)))
    cursor = conn.cursor()
    for data in reader:
        print(data) #What a row looks like
        cursor.execute(query,data)
    cursor.commit()

cursor.close()
print("Done")
conn.close()

执行脚本后,我得到的错误之一如下:

ValueError: 'params' arg (<class 'list'>) can be only a tuple or a dictionary.

我的代码可能有什么问题?非常感谢您的帮助!

How do join the [ ] to each column in my code?

所以你有类似

>>> columns = ['ID','Last Name','First Name']

并且您目前正在使用

>>> ','.join(columns)
'ID,Last Name,First Name'

但现在您需要将列名称括在方括号中。这可以用

来完成
>>> ','.join('[' + x + ']' for x in columns)
'[ID],[Last Name],[First Name]'