使用python导入/批量加载到MS Access中

问题描述 投票:0回答:1

有人知道一种简单的方法来使用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。

python ms-access bulkinsert
1个回答
0
投票

这是旧文章,但我会对此加以说明。因此,您的目录中有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
© www.soinside.com 2019 - 2024. All rights reserved.