【问题标题】:Automate data flow from MS Access to MySQL自动化从 MS Access 到 MySQL 的数据流
【发布时间】:2014-01-08 11:21:10
【问题描述】:

我需要为一家保险公司自动化从 MS-Access 到 MySQL 的数据流。
用户将继续在 MS-Access 中工作,但通过 Access 表单所做的更改也应在 MySQL 中生效。
这是我们的网络分析师的决定,因为网络系统将无法替换当前使用的所有 MS-Access 功能,并且数据管理当前将继续在 MS-Access 中完成(这是决定)。

我看到两个选项,其中一个选项包含我的问题:

  • 通过 VBA 自动上传数据(当通过表单发生更改时,Ajax 请求通过 GET 参数将数据发送到服务器上的 PHP 脚本,该脚本在将数据存储到 MySQL 之前对数据执行必要的操作。也可以立即上传到 MySQL,但决定不这样做);

  • 向 PHP 脚本发送一个简单的请求,并在 PHP 中执行所有操作:在 PHP 中从 MS-Access 获取记录,在 PHP 中操作数据,并在 PHP 中将它们存储到 MySQL。 (我的偏好。我还需要创建一个每晚运行自动迁移的脚本,所以无论如何我都需要这样做)。

MS-Access 数据库存储在我们的本地网络上,即。与运行 PHP 脚本的服务器不同的服务器(即外部 Web 服务器)。
我更愿意用 PHP 管理所有内容,但是(我的问题):

是否可以连接到我们本地网络的主机和 外部服务器的主机同时查询数据 MS-Access,使用 PHP 操作它们并在 MySQL 中插入/更新它们 同时,在一个脚本中?

【问题讨论】:

  • 不能把表绑定到Access,用MySQL表代替Access表吗?
  • 不幸的是,并不总是存在 1-1 连接,因此我需要中间脚本来操作数据。之所以决定流程从MS Access转到MySQL,是因为目前商业代表和精算师都在使用MS Access工具,创建管理MySQL中所有数据的接口需要一些时间,而会计系统的开发已经获得绝对优先权。
  • 我不太确定,如果我的问题正确,但可以通过 odbc 将 mysql 数据库附加到访问前端。这样您就可以在没有访问后端的情况下使用访问权限。
  • 是的,您根本不需要访问后端,但如果需要,您只需更改访问表单以在信息更改时运行 SQL 查询。 ADODB 连接是您的朋友!
  • 我们实际上需要 Access 后端。这里的问题是,并非所有更改都需要即时同步——只有少数(例如,当立即需要运行会计时)。对于一组更新,同步将在晚上运行;所以实际上我仍然需要一种从 Access 获取数据的方法,以便在单个脚本中将其移动到 MySQL。我不想在 VBA 中执行此操作的一个原因是,我不相信它对于我需要同步的大量数据是否可靠。

标签: php mysql vba ms-access pdo


【解决方案1】:

是否可以连接到我们本地网络的主机和 外部服务器的主机同时查询数据 MS-Access,用 PHP 操作它们并在其中插入/更新它们 MySQL 同时在一个脚本中?

是的,但您实际上并不需要 PHP 脚本,可以通过 ODBC 连接或使用 ADODB 连接访问 MySQL。修改表单以与 MYSQL 后端一起使用是最简单的。

ODBC 连接的优点是您可以在单个查询中从访问数据库插入到 MySQL 数据库。 使用 ADODB 连接,您可以进行访问查询,并进行批量插入(您必须通过字符串进行),但这也可以相对较快,因为您只连接到 MySQL 数据库以发送 INSERT 命令, rest 是字符串操作。

如果你打算通过 php 进行异步批量更新

<?php
$dbName = $_SERVER["DOCUMENT_ROOT"] . "products\products.mdb";
if (!file_exists($dbName)) {
    die("Could not find database file.");
}
$db = new PDO("odbc:DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=$dbName; Uid=; Pwd=;");

该代码将允许您连接到访问后端(归功于http://www.sitepoint.com/using-an-access-database-with-php/) 请注意,查询将通过访问进行解析,因此您应该将它们格式化为访问方式。

【讨论】:

  • 谢谢,但正如我最后的评论提到的那样;并非所有更改都需要即时同步。 Access 工具非常庞大(您知道的保险产品),并且为所有数据更改调整 VBA 代码将需要太多昂贵的开发时间。因此,同步是在晚上(批量)运行的——这是我在 VBA 中不信任的。虽然理论上是可能的,但我会看到 Access-VBA 代码会在某些点卡住大量数据 - 我想纯 PHP 解决方案会更可靠。
  • 两者都可能被大量数据卡住。但是 php 可以连接到 mdb 我会用一些有用的代码更新我的答案
  • 谢谢@serakfalcon。顺便说一句,我的问题明确地同时处理两个不同服务器上的两个活动数据库连接,在一个脚本中执行 PDO 执行。
  • 拥有两个不同的连接不是问题,只是不要混淆变量。
  • 谢谢,所以可以在一个脚本中完成——这正是我不太确定的。
猜你喜欢
  • 2015-10-14
  • 1970-01-01
  • 2014-02-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-09-23
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多