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]'
所以最近几天我一直在努力解决这个问题。我需要将大约 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]'