【问题标题】:Porting from MS Access从 MS Access 移植
【发布时间】:2010-10-09 11:57:12
【问题描述】:

我最近收到了一个 MS Access .mdb 数据库文件,并要求我让它在 Linux 系统中可用。我正在寻找一种将 Access 数据库转换为 MySQL 或 PostGres 等开源数据库的方法。

我没有 MS Office,而且这是一个志愿者组织的一次性项目,所以如果可以避免的话,我不想花钱。我正在运行 Vista x64,并且有一个 Linux 虚拟机,所以可以在任何一个中使用的东西都会很好。

【问题讨论】:

  • 我知道这是一场失败的战斗,但是:您没有 MS Access MDB,而是 Jet MDB。可能有人使用 Access 创建了它,但如果它只是数据表,那么您将使用的只是 Jet,而不是 MDB 的 Access 应用程序部分。
  • Jet 已被弃用,因此它应该与旧版 MS Access 应用程序结合使用(我说“旧版”,因为新项目肯定应该在 Access2007 中)。我认为“MS Access .mdb 数据库文件”对它的描述几乎没有歧义:)

标签: mysql linux ms-access postgresql


【解决方案1】:

幸运的是,您不需要 MS Access 从 Access 数据库中获取数据。虽然有像 MDBTools 这样的工具可以在 Linux 上读取 .mdb 文件,但我发现它们对于更大、更复杂的数据库来说是不稳定的。最好的方法是在 Windows 上使用 ADO 或 ODBC 将 .mdb 数据库中的数据导出为您可以在其他地方导入的格式(如 csv)。

我在使用DBI with RubyADO in a Ruby script 时运气不错。

【讨论】:

    【解决方案2】:
    【解决方案3】:

    我使用了MySQL Migration Toolkit,它对表格非常有效,甚至可以创建一个可重用的脚本。它免费且易于使用。

    此工具包现已停产,MySQL Workbench 5.2 将取代它。

    不幸的是,当我在我的系统上使用 MS Access 进行尝试时,它出现“问题导致程序停止正常工作”。当然,在最后一步。 (2013 年 1 月 16 日)

    【讨论】:

    • 很遗憾,MySQL Workbench 目前不支持迁移 Access 数据库。以前的 MySQL Migration Toolkit 可能已经做到了,但 MySQL Workbench 不能(至少从我刚刚测试的版本 v5.2.47 开始)。尝试对架构进行逆向工程时尝试通过 ACE ODBC 连接迁移 .accdb 失败,并且尝试通过 Jet ODBC 连接迁移 .mdb 使 MySQL Workbench 完全崩溃。
    • @GordThompson 这个问题的日期是 09 年。在 09 年,该工具包运行良好。
    • 是的,但您的答案已于 2013 年 1 月 16 日编辑(刚刚再次编辑),最近的一个类似问题 here 已作为重复项关闭并引用了这个问题。因此,当我发现 MySQL Workbench 无法完成这项工作时,我认为发表评论是合适的。
    • 当我作为警告进行编辑时,我应该包括我自己的经验,就像我在 LessThanDot 上所做的那样,但考虑到我当时的设置,这似乎太窄了。
    【解决方案4】:

    MySQL 或 Postgres 都可以作为访问数据的替代数据存储正常工作。如果您的 Access 数据库包含 Forms 或 Reports,那么在 Open Source 中确实没有直接替代品,您要么需要保留 Access 前端并使用 ODBC 驱动程序访问数据,要么在其中编写一系列新的 Forms 或 Reports PHP 或您最喜欢的网络脚本语言。

    【讨论】:

    • kexi-project.org 旨在成为适用于 Linux 的免费、开源 Microsoft Access。和你一样,我怀疑表格/报告是否会完全一样。
    【解决方案5】:

    我现在遇到了同样的问题,发现这个免费软件正是我所需要的:http://www.bullzip.com/products/a2m/info.php

    它从 MDB 文件中提取所有内容,生成一个我直接导入 MySQL 服务器的 SQL 文件。

    【讨论】:

    • 当您说“MDB 文件中的所有内容”时,您的意思是“仅表及其数据”。 MDB 文件可以包含的内容远不止数据表。
    • 对不起,你是对的。我的意思是表和它们的数据,这正是我所需要的。 :)
    【解决方案6】:

    流程分为两部分

    1) 从 Access 数据库转换为脚本,有一些 good options 虽然您可能还需要 Access 和可能的 Sql Server 来执行此操作

    2) 选择您的目标数据库 - MySql 看起来很合适,在 Linux 或 Windows 上运行它并从脚本中运行 ddl 和数据。

    虽然不知道如何在没有 Access 的情况下执行此操作,但您知道架构是什么样的吗?如果您确实遇到问题,我可以帮助您完成第 1 步,但我目前没有安装 Linux。

    【讨论】:

      【解决方案7】:

      我不敢苟同:无需使用外部工具或昂贵的中间件。最简单、最干净、最便宜、最快、最安全(我说是最好的吗?)解决方案是使用 ODBC 并完全集成。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2021-07-03
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多