Так что я борелся с этой проблемой последние пару дней. Мне нужно загрузить CSV-файл с примерно 25 столбцами & 50K строк в таблицу SQL Server (zzzOracle_Extract
), которая также содержит 25 столбцов, те же имена столбцов & в том же порядке.CSV-данные приводят к ошибке при загрузке в таблицу SQL через Python
Это то, что строка выглядит из файла 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.
Что может быть не так с моим кодом? Я очень ценю помощь!
Попробуйте 'cursor.execute (запрос, кортеж (данные))' –
Я устал это, но он все еще бросил ошибку и новую, (102, б "Неправильный синтаксис около„Имя“ .DB-Lib сообщение об ошибке 20018, серьезность 15: \ nОбщая ошибка SQL Server: проверка сообщений с SQL Server \ n ") – Cesar
Имеются ли в ваших именах полей пробелы? Если они это сделают, они должны быть заключены в квадратные скобки в вашем SQL. –