通过Python上传到SQL表时,CSV数据会导致错误

时间:2016-10-07 14:18:33

标签: python sql-server python-3.x pymssql

所以我在过去几天一直在努力解决这个问题。我需要上传一个大约有25列的CSV文件。将50K行放入SQL Server表(# on a first ssh session, which gets pts/0 : sleep 10 # on a second ssh session : pgrep -t "pts/0" 1234 # the first session's bash process 5678 # the first session's sleep process )中,该表还包含25列,相同的列名和列。以相同的顺序。

这是CSV文件中的行:

zzzOracle_Extract

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

['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']

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

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()

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

1 个答案:

答案 0 :(得分:1)

  

如何将[]加入我的代码中的每一列?

所以你有类似

的东西
>>> columns = ['ID','Last Name','First Name']

您目前正在使用

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

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

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