如何将 pandas DataFrame 导出到 Microsoft Access?

Posted

技术标签:

【中文标题】如何将 pandas DataFrame 导出到 Microsoft Access?【英文标题】:How do I export a pandas DataFrame to Microsoft Access? 【发布时间】:2018-12-13 18:12:29 【问题描述】:

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

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

我很乐意为任何人提供任何帮助,并且非常感谢任何示例。

【问题讨论】:

github.com/mkleehammer/pyodbc/wiki 和 github.com/mkleehammer/pyodbc/wiki/Data-Types 感谢@PedroLobito,我不太精通 Python 或如何使用这些 wiki - 他们使用了很多我不熟悉的术语。您能否提供一个如何将数据框导出到 mdb 文件的示例? 【参考方案1】:

首先使用以下命令将数据框转换为 .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:\Path\To\Raw.csv', 'r') as reader, open('C:\Path\To\Clean.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:\Path\To\Access\\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:\Path\To\Folder].Clean.csv;"    
cur = con.cursor()
cur.execute(strSQL)
con.commit()

con.close()                            # CLOSE CONNECTION
os.remove('C\Path\To\Clean.csv')       # DELETE CLEAN TEMP 

【讨论】:

【参考方案2】:

2020 年更新

现在 Microsoft Access 支持外部 SQLAlchemy 方言 ...

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

...这使您可以直接通过 pyodbc 和 Microsoft Access ODBC 驱动程序(在 Windows 上)使用 pandas 的 to_sql 方法。

【讨论】:

【参考方案3】:

我建议像往常一样将 pandas 数据框导出到 csv:

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

然后您可以将其转换为 .mdb 文件,如 *** answer 所示

【讨论】:

以上是关于如何将 pandas DataFrame 导出到 Microsoft Access?的主要内容,如果未能解决你的问题,请参考以下文章

Elasticsearch:将数据从 Elasticsearch 和 Kibana 导出到 Pandas Dataframe

Elasticsearch:将数据从 Elasticsearch 和 Kibana 导出到 Pandas Dataframe

Pandas:将多个 DataFrame 导出到多个 xlsx 文件

python 将Pandas Dataframe导出到csv(无索引)

python 将Pandas Dataframe导出到Excel文件中

导出 pandas DataFrame 时如何删除列名行?