同步Access DB和MySQL

时间:2010-06-20 19:14:09

标签: mysql ms-access synchronization

我有一个使用Access的内部系统非常庞大的客户端,内部用于处理几乎所有公司数据。他们想要一个Web前端到该数据库中的客户数据,并且将在不同的服务器上运行。鉴于Access的限制,前端可能会使用MySQL。

这就留下了同步数据的问题。它不需要一秒钟,即使每天都很好,但我真的不确定这样做的好方法。

鉴于现有系统的范围,将整个系统移动到另一个数据库(例如MySQL)将花费不成比例的时间和工作量。

有没有切实可行的方法来实现这个目标?

4 个答案:

答案 0 :(得分:3)

我的“同步”步骤更像是超级快速备份

1.-在Windows中用这个

转换你的数据库
http://www.bullzip.com/products/a2m/info.php

它将大部分数据库快速转换为YOURDATABASE.sql

2.-在linux中(我使用Ubuntu)

因为你必须经常这样做,所以我建议修改一个脚本。

我的例子:

#!/bin/bash
#edita tablas
szAnswer=$(zenity --title="YOURDATABASE" --entry --text "some text" --entry-text "");
fromdos $szAnswer;
sed -i 's/DATETIME\ DEFAULT\ .*/DATE,/g' $szAnswer;
sed -i 's/DATETIME/DATE/g' $szAnswer;
sed -i 's/FLOAT/DECIMAL(10,2)/g' $szAnswer;
sed -i 's/(NULL,/(\ ,/g' $szAnswer;
sed -i 's/ NULL);/\ );/g' $szAnswer;
sed -i 's/,\ NULL,/,\ ,/g' $szAnswer

zenity程序在ubuntu中是默认的 在窗口中需要“fromdos”来回车

然后:  3.- mysql -u theuser -pthepass

mysql>来源YOURDATABASE.sql

你完成了约5分钟。

答案 1 :(得分:2)

从Access可以非常轻松地复制内容,例如使用运行SQL查询的按钮将数据复制到Internet上的MS-SQL数据库。

如果不需要,我不会选择MySQL,因为这会引入字符编码问题,复制到MS-SQL更为明智。

当然要非常小心,你将拥有3个系统:1个访问系统,1个Web系统和1个用于复制数据的系统。这种情况会带来更高的维护成本。

答案 2 :(得分:1)

我会让一位经验丰富的Access开发人员升级Access应用程序,以便使用SQL Server Express代替MySQL。我会选择基于MySQL的SQL Server Express,它很可能与Access更好地工作,你可能会发现MS Access和SQL Server组合的在线支持比MS Access和MySQL更多。

对于有经验的人来说,这项工作可能需要数周或更长时间。当然,系统越大,需要的时间越长。

一个因素是客户是否希望数据从网站下载到数据库或只是将数据发布到网络?如果只是发布到Web,则可以使用使用查询更新Web数据库的建议。如果两种方式都会变得更加棘手,那么将来升级到SQL Server将是一个更好的选择。

答案 3 :(得分:1)

如果可以在Access用户所在的本地LAN上访问Web数据库,那么将后端升迁到服务器数据库并拥有单个数据库会更有意义。但情况可能并非如此,因为Web服务器可能不是本地的(这通常是一件好事)。

如果我理解你的意见,这是一个明确的主/从关系,Access数据库是主数据库,网站数据库是奴隶。在这种情况下,您应该能够定期更换网站数据库。有几种方法可以做到这一点:

  1. 如果您可以通过Internet访问MySQL端口,则可以使用ODBC通过ODBC将表格导出到MySQL。我不确定你是否必须在导出之前删除MySQL中的每个表,但是一旦你尝试运行导出就会发现它。

  2. 如果无法直接连接到远程数据库,那么一个选项是运行本地MySQL实例,导出到 it ,然后将数据库转储到SQL脚本,将其上传到网站并运行它来替换现有的数据库。我做到了这一点,并不像听起来那么困难。如果它不需要自动化,最简单的方法是在两端安装phpMyAdmin并使用它。如果它需要自动化,这是一个不同的问题,我不知道MySQL命令,但我确定找到命令并不难。