我正在与一位客户合作,他有一个大型的旧版 MS Access“应用程序”,其中包含数十个数据库表。目前,只有一个人可以一次更新数据库,因为它是非分布式的;独立于单个工作站。考虑到 MS Access 应用程序的大小和复杂性,我们无法完全重写它 - 因此客户要求我们通过 Web 应用程序更新某些表,在更新阶段开始和结束时导入和导出数据。
我们的任务是开发以下工作流程:
- 在数据更新过程开始时,以中间格式(CSV、XML 等)从必要的 Access 表中导出相关数据
- 将数据导入由 MySQL 提供支持的 Web 应用程序
- 在固定期限内,允许多个用户通过 Web 应用同时更新数据
- 在数据更新过程结束时,以中间格式从 MySQL 导出数据
- 将数据导回 MS Access
但是,我找不到合适的机制来启用最后阶段。没有 Access 导入选项似乎允许您更新现有记录以及添加新记录 - 您可以将数据导入新表,以及将新记录附加到现有表,但不能根据主键更新现有记录。正如 Access 在其所有Import
选项中所说的那样...
Changes made to the source data will not be reflected in the database
我是否遗漏了某个导入选项的某些内容?还有哪些其他方法?
答案1
过去,在这种情况下,我将导入/更新分为几个步骤
将数据附加到空的“临时”表中
创建/运行更新查询,连接目标和源/临时表
创建/运行附加查询、左外连接目标和源/临时表(目标键=null)
(可选)将临时表附加到历史表
截断临时表
这些步骤可以通过宏轻松实现自动化。