如何将pandas DataFrame导出到Microsoft Access



我有一个Pandas DataFrame,大约有200000个索引/行和30列。我需要将其直接导出到.mdb文件中,将其转换为csv并手动导入将不起作用。

我知道像pyodbc这样的工具在导入/读取访问方面有很大帮助,但关于如何导出的文档很少。

我希望任何人都能提供帮助,并非常感谢任何例子。

首先使用以下命令将数据帧转换为.csv文件

name_of_your_dataframe.to_csv("filename.csv", sep='t', encoding='utf-8')

然后使用pyodbc将.csv加载到.mdb

MS Access可以直接查询CSV文件并运行Make Table query(https://support.office.com/en-us/article/Create-a-make-table-query-96424f9e-82fd-411e-aca4-e21ad0a94f1b)以生成结果表。然而,需要进行一些清洁以清除垃圾排。下面打开两个文件,一个用于读取,另一个用于写入。假设垃圾在csv的第一列中,if逻辑会写入第二列中有一些数据的任何行(根据需要进行调整(:

import os
import csv
import pyodbc
# TEXT FILE CLEAN
with open('C:PathToRaw.csv', 'r') as reader, open('C:PathToClean.csv', 'w') as writer:
read_csv = csv.reader(reader); write_csv = csv.writer(writer,lineterminator='n')
for line in read_csv:
if len(line[1]) > 0:            
write_csv.writerow(line)
# DATABASE CONNECTION
access_path = "C:PathToAccess\DB.mdb"
con = pyodbc.connect("DRIVER={{Microsoft Access Driver (*.mdb, *.accdb)}};DBQ={};" 
.format(access_path))
# RUN QUERY
strSQL = "SELECT * INTO [TableName] FROM [text;HDR=Yes;FMT=Delimited(,);" + 
"Database=C:PathToFolder].Clean.csv;"    
cur = con.cursor()
cur.execute(strSQL)
con.commit()
con.close()                            # CLOSE CONNECTION
os.remove('CPathToClean.csv')       # DELETE CLEAN TEMP 

2020更新

现在有一个支持Microsoft Access的外部SQLAlchemy方言。。。

https://github.com/gordthompson/sqlalchemy-access

它使您能够通过pyodbc和Microsoft Access ODBC驱动程序(在Windows上(直接使用Panda的CCD_ 1方法。

我建议像往常一样将pandas数据帧导出为csv,如下所示:

dataframe_name.to_csv("df_filename.csv", sep=',', encoding='utf-8')

然后您可以将其转换为.mdb文件,因为这个stackoverflow答案显示

相关内容

  • 没有找到相关文章

最新更新