将客户端现有的MS Access数据库与其Linux托管站点集成?

时间:2012-10-29 23:19:41

标签: mysql database linux ms-access

我的客户问我是否可以将他现有的Microsoft Access数据库与他的Linux共享主机网站集成。他一直使用Microsoft Access在他的本地计算机上保存客户数据的记录,但现在想让他们在线查看他们的数据。在我用最好的方法回到他面前之前,我想在这里问几个问题。

目前看来我有两个可行的选择:
a)将他的数据库转换为MySQL或类似数据库并允许他继续使用基于Web的界面而不是Microsoft Access桌面客户端更新数据库。

b)允许他继续使用Microsoft Access,并允许他将更新的文件上传到将解析它们的脚本,然后更新MySQL数据库。

我做了一些关于在Linux上直接使用Microsoft Access数据库的研究,但它似乎不受支持,而且不是最佳选择。

显然,选项 b 会花费更多的工作,但我担心他会拒绝从Microsoft Access更改为基于Web的替代方案来更新数据。我只是想在回到他之前得到一些反馈。

那么,将客户现有的MS Access数据库与他的Linux托管网站集成的最佳方法是什么?

5 个答案:

答案 0 :(得分:3)

您可以使用PDO使用PHP查询Microsoft Access数据库,但它可能不是Web上最强大的选项。 Access旨在成为单个用户数据库,您可能会遇到中度到严重的性能问题。

有关如何完成该指南的指南,请访问:http://phpmaster.com/using-an-access-database-with-php/

大约7年前我遇到了类似的问题,我们最终将数据库转换为MySQL,让一些用户通过Access与数据交互,这为我们提供了一个可以在网络上使用的数据库,以及一个熟悉的界面对于拒绝更改为使用网络的用户,尽管您的里程可能会有所不同:http://dev.mysql.com/doc/refman/5.1/en/connector-odbc-examples-tools-with-access.html

答案 1 :(得分:0)

为什么不考虑将表格移到SQL服务器上,或者使用MySQL,然后继续在用户的桌面上使用Access前端?

在我看来,对于我们称之为应用程序的区别存在一些广泛的混淆。应用程序具有我们称之为UI(用户界面)的功能。这意味着您拥有用户代码,用户界面(如表单)和报表等内容。

应用程序的这一部分是使用MS Access等开发工具构建的。

使用MS,Access或Delphi,或C ++或VB构建应用程序时,您还必须选择数据库系统来存储该数据。因此,如果您使用C ++,Delphi,VB或在本例中使用MS Access编写应用程序,您可以自由选择适合该开发工具使用的数据库系统。开发具有MS访问权限的应用软件的人通常会选择使用名为JET的默认和基于文件共享的数据引擎(或现在的ACE,因为有一个新版本具有64位支持并且还存储过程)。

换句话说,您可以继续使用此应用程序,但只需将表链接到SQL服务器,或者在这种情况下是在Web服务器上运行的MySQL实例。

所以我不确定为什么会出现这样的混乱,人们无法区分您选择使用的数据库系统?而使用像MS Access这样的工具来构建和开发软件。

我的意思是接下来会发生什么?我们打算将VB或c ++称为数据库?人们在我们的行业中没有掌握和理解数据库系统与软件开发系统之间的区别,这似乎是非常愚蠢的。

我不确定这里会出现这种大规模混淆的原因或原因,但我当然希望人们不会被某人支付,或者在咨询或实际接收工作时的工作时间,而这些工作中数据库和数据库之间存在基本的理解和区别。申请系统不明白!我很想对我们的IT行业中可怕的事态和缺乏教育进行咆哮,但我不会这样做。

无论如何,我使用便宜的低成本网络托管并将MS Access应用程序部署到人们的桌面上已超过10年了。我只是将应用程序链接到Web服务器上运行的数据库实例。我开始使用MySQL做这件事,但是多年来我一直在使用SQL服务器(我只使用SQL服务器,因为我对它感觉更舒服)。

因此,没有什么可以阻止您将数据和表移动到在该Linux服务器上运行的某种类型的SQL服务器或MySQL的实例。因此,您可以“按原样”继续使用Access应用程序。通过这种方式,99%的代码和表单以及应用程序应该继续运行而无需修改。在应用程序中可能有一些小的部分和几行代码不起作用,但对于任何体验应用程序开发人员熟悉Access作为开发,这不应该花费超过几个小时的时间工具。

这种设置的美妙之处在于,您构建的任何类型的Web界面现在都可以立即在用户桌面上的任何访问表单中看到。因此,用户在Access表单和Access VBA代码中的任何更新都会立即显示在网站上,因为它们共享相同的数据库系统。

所以我认为这里最好的方法是首先要掌握使用Access构建的应用程序与您选择与Access一起使用的数据库系统之间的区别。

最后但并非最不重要的一点是,Access现在具有Web发布功能,您可以在以下视频中看到我如何更改为在Access中运行此应用程序100%浏览器:

http://www.youtube.com/watch?v=AU4mH0jPntI

但是,上述内容确实需要所谓的Access Web Services。事实上,它基于一组Web服务和添加到Access的新界面 - 因此,除非运行Office 365或SharePoint,否则此设置不适合。

答案 2 :(得分:0)

商业上有一些选择。以下是来自Easysoft的一对,从PHP-ODBC或PDO连接时可能有所帮助: -

  1. Easysoft ODBC-Access Driver,它可以在Linux上连接到本地访问数据库,或者使用Samba连接到远程Windows机器上的Access数据库。如果您要使用Samba,则可以与其他用户同时访问MS Access数据库。

  2. Easysoft ODBC-ODBC Bridge,这是一个客户端服务器安装,您将客户端ODBC驱动程序放在Linux上,而将ODBC-ODBC Bridge(OOB)服务器放在Windows上。然后你最终得到PHP程序 - > OOB客户端 - > OOB服务器 - > MS Access ODBC驱动程序 - > MS Access数据库。

  3. 这两种解决方案都有优点和缺点,但它们都应符合您的要求。您可以从Easysoft web site获得该软件的试用版。

答案 3 :(得分:0)

有一个新的软件工具,CNS Media GateWay,你可以使用。

您可以通过CNS ODBC和JDBC驱动程序从任何自定义应用程序或平台(如Linux)连接到MS Access,Exchange(2000 - 2013),MS SharePoint,Dynamics CRM,Dynamics NAV等等,从而访问,例如,来自自定义应用程序的整个Exchange邮箱。

我希望这篇文章能帮助你回答你的问题。

了解更多信息,请访问:

http://www.connecting-software.com

答案 4 :(得分:0)

我只是为无法将数据库移出Access且没有第三方驱动程序预算的项目做过类似的事情。这是一个很大的麻烦,所以在这里为遇到此问题的任何人记录我的解决方案:

  1. 在Linux服务器上,我们可以安装包含访问数据库的Windows网络驱动器,然后使用Meza package将表加载到内存中。需要知道我们想要对该表进行哪些更改。

    meza.io.read_mdb(path, table='TABLENAME')

  2. 要在访问数据库中进行实际更新,我们将要进行的更改集移动到了共享网络驱动器(上面已安装)上的.txt文件中。然后,在Windows服务器上,我们可以使用Powershell脚本读取该文件,在该脚本中生成适当的SQL,然后在Access数据库上执行该SQL。

    $conn = New-Object System.Data.OleDb.OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=$YOURACCESSDATABASE;Persist Security Info=False") $conn.Open() $transaction = $conn.BeginTransaction() $command = $conn.CreateCommand() $command.Transaction = $transaction $command.CommandText = "UPDATE [table] SET [col]=@PARAMNAME" $PARAMVAR = "Set a parameter value" $command.Parameters.AddWithValue("@PARAMNAME",$PARAMVAR) $command.ExecuteNonQuery() $transaction.Commit()

  3. 在我的工作流程中,我有Linux python脚本循环和睡眠等待更改进行,然后Windows Powershell脚本在完成更改后将截断.txt文件,这是Linux python可以检查的内容知道何时可以继续。

一些注意事项:

  • 需要Windows服务器上的Microsoft Access Database Engine 2010,您可以在此处下载:http://www.microsoft.com/en-us/download/details.aspx?id=13255
  • Powershell必须运行x86架构,因此我将其添加到了Powershell脚本中:

    if ($env:Processor_Architecture -ne "x86")
    { write-warning 'Launching x86 PowerShell' &"$env:windir\syswow64\windowspowershell\v1.0\powershell.exe" -noninteractive -noprofile -file $PATHTOTHEPOWERSHELLSCRIPTYOUARECURRENTLYRUNNING' -executionpolicy bypass exit }