“insert into”语句由于“参数39(“”)而导致错误:提供的值不是数据类型float的有效示例

bqucvtff  于 2021-08-20  发布在  Java
关注(0)|答案(1)|浏览(510)

我正在尝试使用python和pandas将几个.csv文件加载到sql server数据库。
当我运行代码时,出现以下错误:
参数39(“”):提供的值不是数据类型float的有效示例
我没有39个参数。。。
我将非常感激能得到的一切帮助!

import pandas as pd

# Import CSV

data = pd.read_csv (r'D:\USA-Data\USA\2007\ORATS_SMV_Strikes_20070103.csv')   
df = pd.DataFrame(data, columns= ['ticker','stkPx','expirDate','yte','strike','cVolu','cOi','pVolu','pOi','cBidPx','cValue','cAskPx','pBidPx','pValue','pAskPx','cBidIv','cMidIv','cAskIv','smoothSmvVol','pBidIv','pMidIv','pAskIv','iRate','divRate','residualRateData','delta','gamma','theta','vega','rho','phi','driftlessTheta','extVol','extCTheo','extPTheo','spot_px','trade_date'])

print(df)

# Connect to SQL Server

import pyodbc

conn = pyodbc.connect('Driver={SQL Server};'
                      'Server=WIN7-PC;'
                      'Database=USA;'
                      'Trusted_Connection=yes;')
cursor = conn.cursor()

# Insert DataFrame to Table

for row in df.itertuples():
    cursor.execute('''INSERT INTO USA.dbo.USAData([ticker,stkPx,expirDate,yte,strike,cVolu,cOi,pVolu,pOi,cBidPx,cValue,cAskPx,pBidPx,pValue,pAskPx,cBidIv,cMidIv,cAskIv,smoothSmvVol,pBidIv,pMidIv,pAskIv,iRate,divRate,residualRateData,delta,gamma,theta,vega,rho,phi,driftlessTheta,extVol,extCTheo,extPTheo,spot_px,trade_date])VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)''',
                row.ticker, 
                row.stkPx,
                row.expirDate,
                row.yte, 
                row.strike,
                row.cVolu, 
                row.cOi,
                row.pVolu,
                row.pOi, 
                row.cBidPx,
                row.cValue, 
                row.cAskPx,
                row.pBidPx,
                row.pValue, 
                row.pAskPx,
                row.cBidIv, 
                row.cMidIv,
                row.cAskIv,
                row.smoothSmvVol, 
                row.pBidIv,
                row.pMidIv, 
                row.pAskIv,
                row.iRate,
                row.divRate, 
                row.residualRateData,
                row.delta, 
                row.gamma,
                row.theta,
                row.vega, 
                row.rho,
                row.phi,
                row.driftlessTheta, 
                row.extVol,
                row.extCTheo,
                row.extPTheo, 
                row.spot_px,
                row.trade_date
                )
conn.commit()
3df52oht

3df52oht1#

我以前遇到过这种情况,导致此错误的可能原因可能是 Dataframe 中的nan值,我建议打印df并检查是否存在任何nan值,并相应地纠正数据。

相关问题