如何在Python中把DBF转换成CSV?

572 阅读2分钟

背景介绍

💡 dBase数据库文件(DBF)是一种数据库文件格式,其扩展名是 ,由各种应用程序和数据库系统使用。.dbf

💡 逗号分隔值(CSV)文件是一种文本文件,使用逗号来分隔数据记录的字段(=line)。

问题的提出

给定一个.dbf 文件my_db.dbf 。如何将其转换为CSV文件my_db.csv

方法1: dbfread模块

要在Python中把一个DBF文件转换成CSV文件,使用dbfread 模块,创建一个DBF() 对象,并使用这个对象遍历所有dbf 记录。然后,你可以通过使用csv.writer() 功能,轻松地一次写一行/一条记录。

你可能需要使用pip安装以下两个库。

  • pip install dbfpy
  • pip install dbfread

[下面是你如何检查这些库是否已经安装]在你的环境中。

一旦你确定这些库已经安装,运行下面的代码,在Python中把你的DBF文件转换成CSV。

import csv
from dbfread import DBF


def dbf_to_csv(path):
    '''Converting the .dbf at the specified path and
       returns the name of the .csv file after conversion.

       The .csv file has same path and naming scheme. Examples:
       (1) my_file.dbf --> my_file.csv
       (2) /path/to/file/my_file.dbf --> /path/to/file/my_file.csv
    '''

    # Set the name of the CSV file
    csv_path = path[:-4] + ".csv"

    # Create a DBF object, i.e., load the .dbf file into the code 
    dbf = DBF(path)

    # Create a CSV file and fill it with dbf data
    with open(csv_path, 'w', newline = '') as f:

        # Create the CSV writer
        writer = csv.writer(f)

        # Write the CSV column names
        writer.writerow(dbf.field_names)

        # Write the CSV rows
        for record in dbf:
            writer.writerow(list(record.values()))

    return csv_path

dbf_to_csv('my_file.dbf')

方法 2: dbf 模块

要将一个或多个.dbf 文件转换为CSV文件,请安装dbf 模块并在你的Python shell中运行dbf.export(path)dbf.export(path_1, path_2, ...)

请确保在你的命令行或 shell 中使用以下命令安装 [dbf](https://pypi.org/project/dbf/)模块,在你的命令行或 shell 中使用以下命令。

pip install dbf

安装后,在你的Python脚本中运行以下代码,在Python中把DBF转换成CSV文件。

import dbf
dbf.export('my_file.dbf')

你可以通过在dbf.export() 函数中传递多个字符串路径参数来导出多个文件。

像这样。

import dbf
dbf.export('my_file_1.dbf', 'my_file_2.dbf', 'my_file_3.dbf')