【问题标题】:python firebird/fdb file parserpython firebird/fdb 文件解析器
【发布时间】:2020-03-05 15:06:14
【问题描述】:

我正在使用以 .fdb 字节导出存档的管理,fdb 文件是 Firebird 使用的文件。现在我必须用 Python 创建一个解析器来获取存档并使用 Firebird 的规范解析所有存档,以便我可以使用存档获得的数据创建我的 json/xml/ecc。

这里是文件规格的链接

https://firebirdsql.org/manual/fbint-structure.html

有人有创建解析器的经验吗?他们可以指导我吗?

【问题讨论】:

  • 你为什么需要它? Firebird 的下一个版本将改变 ODS,无论是大体上还是一些模糊的小细节,你将不得不一次又一次地更新你的解析器,以永无止境的 wack-a-mole 方式。获取 Firebird Embedded DLL 并从您的 python 代码中使用它。您还可以获取 Firebird C++ 源代码并使用它们进行工作。要么用 Python 重写它们,要么尝试用它们制作一个低级访问 DLL,然后从 Python 中使用它
  • 你也可以在 SourceForge 上找到 FBExport 实用程序,为什么不使用 FBExport+Firebird 来创建这些 json 呢?
  • 我明白你的意思,但这不是我的选择,存档转换是我启动的一个更大的数据库集成项目的一部分,他们希望我的程序现在拿存档,解码它并将感兴趣的数据发送到我们的数据库......没有任何客户交互......这是问题所在,否则我会使用简单的 exels
  • 您不需要“客户交互”来调用外部 DLL 或 EXE 文件。不问客户就做。请注意,Firebird 2.5 将与回到 1990 年代后期的 Interbase 5 的 ODS 版本一起使用。但是 Firebird 3.0 故意丢球,只能与它自己的 ODS 12 一起工作。而且很有可能,Firebird 4 也将专门与它自己的 ODS 版本一起工作,并且没有更多的跨版本兼容性......坦率地说,如果你完全需要解析 -我会要求他们发送 .FBK 文件而不是 .FDB,然后将 gbak 代码转换为 Python。 FBK 应该更适合单向解析

标签: python file parsing firebird


【解决方案1】:

您不需要创建解析器。 .fdb 文件是 - 假设 Firebird 的正常命名约定 - Firebird 数据库文件。要阅读它,您需要一个 Firebird 服务器(或嵌入式 Firebird)来打开数据库,然后您可以使用 SQL 查询数据库。

在 Python 中,您可以使用库 fdbpyfirebirdsql 连接到 Firebird 服务器以访问数据库文件。 fdb 库使用原生 Firebird 绑定,因此它应该也可以使用 Firebird 嵌入式,而 pyfirebirdsql 只能连接到 Firebird 服务器。

简而言之,当解析器已经存在时,不要尝试编写解析器:Firebird,一种非常先进的解析器,可让您使用 SQL 的全部功能来访问数据。

请注意,尽管 Firebird 数据库文件与 Firebird 版本相关联,因此您需要使用正确的 Firebird 版本才能访问该文件。

【讨论】:

    猜你喜欢
    • 2018-12-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-07-16
    相关资源
    最近更新 更多