首页 > 解决方案 > 使用python将多个csv文件导入SQL

问题描述

嘿,我正在尝试从我拥有的文件夹中导入多个 csv 文件(例如 1200 个 csv 文件)

我能够创建一个将插入一个 csv 文件的代码,但我不太确定如何更改它以通过代码获取多个文件,而不是每次手动更改文件的名称。

这是代码:

import pandas as pd

# Import CSV
data = pd.read_csv (r'D:\USA-Data\USA\2007\ORATS_SMV_Strikes_20070131.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'])
df = df.fillna(0)
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()

文档的名称是这样的:

ORATS_SMV_Strikes_20070201.csv ORATS_SMV_Strikes_20070202.csv ORATS_SMV_Strikes_20070205.csv

等等...

真的会感谢我能得到的所有帮助!

标签: pythonsqlpandascsvpyodbc

解决方案


推荐阅读