Ces*_*sar 5 python pymssql python-3.x
我在将 CSV 文件上传到 MS SQL Server 中的表时遇到问题,CSV 文件有 25 列,标题与 SQL 中的表同名,该表也有 25 列。当我运行脚本时,它会引发错误
params arg (<class 'list'>) can be only a tuple or a dictionary
Run Code Online (Sandbox Code Playgroud)
将此数据导入 MS SQL 的最佳方法是什么?CSV 和 SQL 表都具有完全相同的列名。
这是代码:
import csv
import pymssql
conn = pymssql.connect(
server="xx.xxx.xx.90",
port = 2433,
user='SQLAdmin',
password='xxxxxxxx',
database='NasrWeb'
)
cursor = conn.cursor()
customer_data = csv.reader('cleanNVG.csv') #25 columns with same header as SQL
for row in customer_data:
cursor.execute('INSERT INTO zzzOracle_Extract([Customer Name]\
,[Customer #]\
,[Account Name]\
,[Identifying Address Flag]\
,[Address1]\
,[Address2]\
,[Address3]\
,[Address4]\
,[City]\
,[County]\
,[State]\
,[Postal Code]\
,[Country]\
,[Category ]\
,[Class]\
,[Reference]\
,[Party Status]\
,[Address Status]\
,[Site Status]\
,[Ship To or Bill To]\
,[Default Warehouse]\
,[Default Order Type]\
,[Default Shipping Method]\
,[Optifacts Customer Number]\
,[Salesperson])''VALUES(%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,)',row)
conn.commit()
cursor.close()
print("Done")
conn.close()
Run Code Online (Sandbox Code Playgroud)
这是 CSV 文件的第一行的样子
您使用csv.reader方法不正确。第一个参数.reader不是 CSV 文件的路径,而是
\n\n\n[an] 支持迭代器协议并在每次调用其方法时返回字符串的
\n__next__()对象 \xe2\x80\x94 文件对象和列表对象都适合。
因此,根据文档中的示例,您应该执行以下操作:
\n\nimport csv\nwith open(\'cleanNVG.csv\', newline=\'\') as csvfile:\n customer_data = csv.reader(csvfile)\n for row in customer_data:\n cursor.execute(sql, tuple(row))\nRun Code Online (Sandbox Code Playgroud)\n
| 归档时间: |
|
| 查看次数: |
27608 次 |
| 最近记录: |