代码之家  ›  专栏  ›  技术社区  ›  Elle H

同步Access DB和MySQL

  •  4
  • Elle H  · 技术社区  · 16 年前

    我有一个客户,他有一个非常大的内部系统,使用Access,在内部使用Access来处理几乎所有的公司数据。他们希望该数据库中的客户数据有一个web前端,并且运行在不同的服务器上。考虑到访问的限制,前端可能会使用MySQL。

    这就留下了同步数据的问题。它不需要到第二天,甚至每天都可以,但我真的不确定这样做的好方法。

    考虑到现有系统的范围,将整个系统移动到另一个数据库(如MySQL)将花费大量的时间和工作量。

    有什么切实可行的方法可以做到这一点吗?

    4 回复  |  直到 16 年前
        1
  •  1
  •   Tony Toews    16 年前

    我会让一个有经验的Access开发人员升级Access应用程序,用sqlserverexpress代替MySQL来处理数据。我会选择sqlserverexpress而不是MySQL,因为它很可能与Access一起工作得更好,而且您可能会发现,与MS-Access和MySQL相比,MS-Access和sqlserver组合的在线支持会更差。

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

    其中一个因素是客户是否希望数据从网站下载到数据库,或者只是将数据发布到web上?如果只是发布到web上,那么使用查询更新web数据库的建议可能会奏效。如果这两种方法都起作用,那么事情就变得越来越棘手,将来升级到sqlserver将是一个更好的选择。

        2
  •  3
  •   andrewsi Laxman Battini    13 年前

    1.-在windows中,用这个转换你的数据库

    http://www.bullzip.com/products/a2m/info.php
    

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

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

    我的例子:

    #!/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
    

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

    然后: 3.-mysql-u the用户-pthepass

    mysql>源数据库.sql

    大约5分钟就搞定了。

        3
  •  2
  •   Michiel    16 年前

    从Access可以相当容易地复制内容,例如使用运行SQL查询的按钮将数据复制到internet上的MS-SQL数据库。

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

    当然要非常小心,您将有3个系统:1个访问系统、1个web系统和1个用于复制数据的系统。这种情况是非常危险的,并且会带来更高的维护成本。

        4
  •  1
  •   David-W-Fenton    16 年前

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

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