有人知道一种简单的方法来使用python将多个CSV文件加载到一个给定的访问表中吗?
例如,我的目录可能有100个名为import _ *。csv(import_1.csv,import_2.csv等)的文件
MS Access中有一个目标表应接收所有这些csv。
我知道我可以使用pyodbc并逐行构建语句来执行此操作,但这需要很多代码。然后,您还必须保持SQL最新,因为可能会添加或删除字段。 MS Access拥有自己的批量加载功能-我希望可以通过python访问此功能,或者希望python具有与此相同的库。
如果那里有一个图书馆可以像这样轻松地做到这一点,那将是非常棒的:
dbobj.connectOdbc(dsn)dbobj.bulkLoad(“ MyTable”,“ c:/temp/test.csv”)
内部需要进行一些工作才能确定模式并使之正常工作。但是希望外面有人已经完成了繁重的工作?
是否可以进行批量导入?读熊猫很简单-但是您必须从那里将其读入MS Access。
这是旧文章,但我会对此加以说明。因此,您的目录中有100多个CSV文件,您想将所有内容都推送到MS Access中。好的,我将所有CSV文件组合到Python中的一个视域DF中,然后保存DF,并将其导入到MS Access中。
#1 Use Python to merge all CSV files into one single dataframe:
# Something like...
import pandas as pd
import csv
import glob
import os
#os.chdir("C:\\your_path_here\\")
results = pd.DataFrame([])
filelist = glob.glob("C:\\your_path_here\*.csv")
#dfList=[]
for filename in filelist:
print(filename)
namedf = pd.read_csv(filename, skiprows=0, index_col=0)
results = results.append(namedf)
results.to_csv('C:\\your_path_here\\Combinefile.csv')
或者,这就是我要采取的方式...在Access中使用VBA将所有CSV文件合并到一个表中(对于Python则完全不需要)。
Private Sub Command1_Click()
Dim strPathFile As String, strFile As String, strPath As String
Dim strTable As String
Dim blnHasFieldNames As Boolean
' Change this next line to True if the first row in EXCEL worksheet
' has field names
blnHasFieldNames = False
' Replace C:\Documents\ with the real path to the folder that
' contains the CSV files
strPath = "C:\your_path_here\"
' Replace tablename with the real name of the table into which
' the data are to be imported
strTable = "tablename"
strFile = Dir(strPath & "*.csv")
Do While Len(strFile) > 0
DoCmd.TransferText acImportDelim, , strTable, strPathFile, True
' Uncomment out the next code step if you want to delete the
' EXCEL file after it's been imported
' Kill strPathFile
strFile = Dir()
Loop
End Sub