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

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

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

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

【问题讨论】:

标签: python pandas ms-access pyodbc


【解决方案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 文件,如 stackoverflow answer 所示

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-03-15
        • 2020-10-04
        • 2017-08-25
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多