【发布时间】:2020-11-05 21:32:57
【问题描述】:
是否可以将 .DBF 文件转换为任何其他格式? 有谁知道一个脚本,可以用来将 .DBF 文件转换为 mysql 查询。
也可以将 DBF 文件转换为 CSV 文件。 DBF 文件的编解码器总是有问题。
康斯坦丁
【问题讨论】:
标签: mysql csv parsing converters dbf
是否可以将 .DBF 文件转换为任何其他格式? 有谁知道一个脚本,可以用来将 .DBF 文件转换为 mysql 查询。
也可以将 DBF 文件转换为 CSV 文件。 DBF 文件的编解码器总是有问题。
康斯坦丁
【问题讨论】:
标签: mysql csv parsing converters dbf
https://www.dbase.com/Knowledgebase/faq/import_export_data.asp
问:如何将数据从 dBASE 表导出到文本文件?
A:将数据从 dBASE 导出到文本文件是通过 COPY TO 命令处理的。
与 APPEND FROM 命令一样,有多种方法可以使用此命令。这里我们只对它最基本的用途感兴趣。了解如何使用此命令后,您可以访问在线帮助以获取有关使用 COPY TO 命令可以完成的操作的更多详细信息。
要导出数据,您必须首先使用要从中导出数据的表。和以前一样,您将在命令窗口中使用 USE 命令。
USE <tablename>
例如:
USE Mytest.dbf
使用表后,您只需在命令窗口中输入以下命令:
COPY TO <filename> TYPE DELIMITED
例如:
COPY TO Myexport.txt TYPE DELIMITED
这将导致在当前目录中创建一个名为 Myexport.txt 的文件,该文件将采用 DELIMITED 或 *.CSV 格式。
如果我们想以 *.SDF 格式导出数据,我们会输入:
COPY TO Myexport.txt TYPE SDF
这将导致在当前目录中创建一个名为 Myexport.txt 的文件,该文件将采用 System Delimted 或 *.SDF 格式。
这些是关于如何将文本数据导入和导出到 dBASE 表的基础知识。有关详细信息,请参阅 APPEND FROM 和 COPY TO 命令的在线帮助。
【讨论】:
我使用 Python 和 dbfread 模块将旧的(大约 1997 年)DBF 文件转换为 CSV。
安装 Python 后,从 Python 解释器 (<WIN> + 'Python') 安装 dbfread 模块:
>>> pip install dbfread
该模块有多种读取DBF文件的方法和优秀的文档。
然后一个 Python 脚本完成这项工作,或者直接在解释器中输入:
# Read the DBF file
table = DBF('C:/my_dbf_file.dbf', encoding='1252')
outFileName = 'C:/my_export.csv'
with open(outFileName, 'w', newline='', encoding='1252' ) as file:
writer = csv.writer(file)
writer.writerow(table.field_names)
for record in table:
writer.writerow(list(record.values()))
请注意,每次读取和保存数据库中的每条记录,并且 CSV 文件的第一行是列的名称。
编码可能有问题,要尝试的编码列表是here:dbread.DBF() 方法尝试猜测编码,但并不完美。这就是为什么在代码中我在DBF() 和csv.open() 中都指定了参数编码。
【讨论】: