【问题标题】:Writing records into a .dbf file using PHP?使用 PHP 将记录写入 .dbf 文件?
【发布时间】:2014-10-23 12:42:25
【问题描述】:

我目前正在构建一个网络应用程序,该应用程序为用户显示来自 .csv 文件的数据,并在其中对其进行编辑并将结果存储在 mySQL 数据库中。

对于应用程序的下一阶段,我正在考虑使用 PHP 以及 mySQL 数据库实现将结果写入**现有 .DBF** 文件的功能。

任何帮助将不胜感激。谢谢!

【问题讨论】:

  • DBF 不是 Microsoft Access 的一种格式吗?这和 MySQL 有什么关系?
  • 我需要能够为客户端写回这种文件格式。 mySQL 数据库仍将被写入,但结果也将写入 .DBF 文件。编辑 - 在投反对票之前,至少要等待您的问题得到答复。
  • 所以用 MySQL 编写是一回事,用 Access 编写是完全不同的事情。见sitepoint.com/using-an-access-database-with-php
  • @Qualcuno - .dbf 曾经是 dBase 和 FoxPro,与 Microsoft 无关
  • 不确定,但请查看dBase 扩展名

标签: php mysql web-applications dbf


【解决方案1】:

实际上,我之前应该想到第三条路线,并且可能更适合您想要的。当然,PHP 允许同时打开两个或多个数据库连接。我刚刚检查过,PHP 有一个 dBase 扩展。您没有说您实际写入的数据库(除了原始 dBase 使用 .dbf 文件之外的几个),因此如果您在此之后还有任何问题,请说明您的目标数据库实际上是什么。但我想,这个扩展可能适用于所有这些,或者在http://php.net/manual/en/refs.database.php 上查看 PHP 的数据库扩展列表。你得试试看。

然后给出一个关于如何一次打开两个连接的想法,这里有一个代码 sn-p (它实际上有 oracle 作为第二个数据库,但它显示了基本原理): http://phplens.com/adodb/tutorial.connecting.to.multiple.databases.html 网上有很多关于 PHP 的多个数据库连接的指导甚至教程,所以也可以看看它们。

【讨论】:

    【解决方案2】:

    这是数据迁移项目中的一种标准情况 - 如何将数据从一个数据库获取到另一个数据库。答案是您必须找出目标文件(在本例中为 .dbf 文件的格式)需要采用的格式,然后您只需从 MySQL 文件中收集数据,将其重新排列为所需的格式,然后编写一个使用 PHP 的文件写入函数新建文件。

    我并不是说这很容易做到;我不知道 .dbf 文件的格式(它是 dBase 使用的格式,但也已在其他地方使用过)。您不仅需要知道 .dbf 记录的格式,而且如果您正在创建新文件,几乎肯定会有标题信息(但您说这些文件是预先存在的,所以这对您来说应该不是问题)。但是记录也可能有少量的标题数据,您需要编写这些数据才能计算出来,并且每一个都需要采用所需的形式。

    因此,您需要找出 .dbf 文件的确切格式 - 毫无疑问,谷歌搜索会为您找到相关信息。但我知道即使 .dbf 也可能存在各种差异 - 在这种情况下,您需要查看现有文件的结构以在需要时解决这些差异)。

    如果您不需要即时复制到目标数据库,另一种解决方案是它可以选择从 CSV 文件导入数据,这更容易 - 而且您已经拥有 CSV 文件。但是大概这些文件中数据字段的顺序与目标数据库中字段的顺序不同(除非它们来自目标数据库,但是您可能不会尝试将其写回,除非它们是存档记录) .不过,我要说明的是,您可以按照目标数据库所需的字段顺序将数据从 PHP 程序写入 CSV 文件,然后作为单独的步骤将它们读入目标数据库。换句话说,一个两阶段过程。这特别适用于一次性转移到新数据库的迁移。

    总之,你有一个具有挑战性但有趣的项目!

    【讨论】:

    • 抱歉,我忘记了 .dbf 文件的用途。我已经编辑了我的答案。
    • 感谢您迅速、有力和深入的回复! CSV 的想法绝对是我要研究的东西。我在最后一个小时看到了这篇文章,它展示了如何通过 mysql 直接插入到 .dbf 文件中,这可能是解决方案吗? - dbf-software.com/sql-insert.html
    • 啊,你已经找到了。是的,它显示正在使用的 dbf 文件; PHP可以连接到那种数据库;查看我添加的新答案。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多