有没有办法在 mysql 服务器和本地 MS Access 之间同步(两种方式)表?

Posted

技术标签:

【中文标题】有没有办法在 mysql 服务器和本地 MS Access 之间同步(两种方式)表?【英文标题】:Is there a way to sync (two way) tables betwen a mysql server and a local MS Access? 【发布时间】:2010-04-09 20:25:15 【问题描述】:

帮我找出一个(不是那么独特的)问题的解决方案。

我的研究小组在迁徙动物身上安装了 GPS 设备。每隔一段时间,研究技术人员就会在动物的范围内,并有机会下载所有记录的点。每个人都吐出一个 dbf,新的位置只是附加到末尾(所以文件只是累积的)。

这些数据需要在研究小组之间共享。其他人(除了我)都想使用访问,所以他们可以进行小的编辑并更喜欢那个界面。他们不喜欢使用 mysql

我想出的解决办法是:

a) 下载文件的人进入网页,在表格中输入动物 ID,选择 .dbf 文件并上传到服务器上的 mysql 数据库(我仍然需要编写 php 代码来读取 dbf 和从中编写 sql 插入语句)。

b) 每个人都从他们的本地访问数据库同步到服务器。 (这本来可以通过访问来实现,但非常笨重)。

是否有工具(最好是开源的),可以将访问表与 mysql 表进行比较并同步两者(双向)?

或者,有人有更优雅的解决方案吗?

最终目标是让每个人都可以使用他们喜欢的数据库应用访问他们计算机上的最新数据。

【问题讨论】:

【参考方案1】:

可以将 ADO 或 ODBC 与 Access 和 MySQL 一起使用来运行查询以比较和更新。通过 VBA 自动执行此操作非常简单。

这可能很有趣:What is the best way to synchronize data between MS Access and MySQL?

【讨论】:

【参考方案2】:

一个明显的实现提示:

    在 MySQL 中使用 UUID(),在 Access 中使用 GUID 作为唯一标识符 在同步行中存储上次更改的时间戳

这样您就可以轻松区分记录更新和新记录,甚至您自己也可以使用 ODBC 合并更改。

【讨论】:

Access 中的 GUID 有很多问题 (trigeminal.com/usenet/usenet011.asp?1033)。我不明白为什么它甚至是必要的。最初的问题说这些表是仅添加的,因此使用自动增量字段,您可以轻松确定添加了哪些记录,而无需知道任何时间。我看不出 GUID 比自动增量字段更容易,除非所涉及的记录数超过该字段的可能值。 @david-w-fenton,好吧,正如我看到的问题:每个用户都有一个最新 MySQL 数据库的 MS Access 副本。每个用户都可以对其副本数据库进行更改(添加新数据),并在几分钟/小时后将更改与 MySQL 数据库同步。我看到了一个并发问题,对新实体使用 UUID 是一种解决方案。【参考方案3】:

有没有工具(最好打开 源),可以比较访问 表到mysql表并同步两者 (两种方式)?

你看过this SuperUser post吗?

另外,你用谷歌搜索过吗?我在 Google 上搜索了“访问比较数据库”,页面上的第三个链接列出了几个用于比较数据库的不同软件包。

似乎有些允许您同步数据,而有些则不允许。

对于它的价值,我已经在 Access 和 MySQL 之间编写了多主同步程序,它并不那么难,特别是如果你可以从 Access 运行它并使用指向实时的 ODBC 链接表MySQL 数据表。特别是在 Access 中的大部分新数据都是新记录的情况下,它不应该那么复杂。

另一方面,我认为不那么复杂的事情可能对你来说太吓人了——我不知道你对 SQL、DAO 和 VBA 的熟悉程度。

【讨论】:

相当老的帖子,但我被困在与它非常相似的东西上,你能在这里指导我吗?谢谢

以上是关于有没有办法在 mysql 服务器和本地 MS Access 之间同步(两种方式)表?的主要内容,如果未能解决你的问题,请参考以下文章

安全的本地 mysql 访问

MS Access 数据库和 MySql 之间的同步

navcat无法远程连接mysql数据库解决办法

带有 GROUP BY 的这个 MySQL 视图的 MS 版本?

在 .NET 或 MS SQL 中模拟 MySql OLD_PASSWORD?

如何在 MySQL 中打破类似于 MS SQL Server 的列名?