使用Python将CSV文件导入SQL Server
作者:互联网
我在将CSV文件上传到MS SQL Server中的表时遇到问题,该CSV文件有25列,并且标题与SQL中的表具有相同的名称,该表也有25列.当我运行脚本时会引发错误
params arg (<class 'list'>) can be only a tuple or a dictionary
将此数据导入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()
这就是CSV文件的第一行的样子
解决方法:
尝试使用70001,因为它使用本机数据库导入命令,所以它的名称为d6tstack.它适用于Postgres和MYSQL,MS SQL是试验性的.如果无法解决,请发表评论或提出问题.
import pandas as pd
df = pd.read_csv('cleanNVG.csv')
uri_mssql = 'mssql+pymssql://usr:pwd@localhost/db'
d6tstack.utils.pd_to_mssql(df, uri_mssql, 'table', 'schema') # experimental
这对于在写入数据库之前导入具有数据模式更改的多个CSV和/或使用熊猫进行预处理也很有用,请参见examples notebook
d6tstack.combine_csv.CombinerCSV(glob.glob('*.csv'),
apply_after_read=apply_fun).to_mssql_combine(uri_psql, 'table')
标签:python-3-x,pymssql,python 来源: https://codeday.me/bug/20191118/2025535.html