Database 在我的Windows程序中从mdb数据库文件获取数据

Database 在我的Windows程序中从mdb数据库文件获取数据,database,windows,ms-access,export,Database,Windows,Ms Access,Export,我曾经帮助一位客户将mdb表数据导出到csv文件(然后进一步处理这些csv文件)中。我使用过Ubuntu,所以mdb工具(mdb查看器)对我来说是可用的。现在,客户希望我以Windows程序的形式自动完成工作。我遇到了两个问题: 几个小时后,我仍然没有在Windows上找到一个可以将我的表数据导出到程序/脚本中的免费工具。Jackcess(Jackcess.sourceforge.net)看起来很有希望,但是当运行下载的jar时,会弹出一个完全无关的诺基亚套件程序 我已经使用pyodbc模块在p

我曾经帮助一位客户将mdb表数据导出到csv文件(然后进一步处理这些csv文件)中。我使用过Ubuntu,所以mdb工具(mdb查看器)对我来说是可用的。现在,客户希望我以Windows程序的形式自动完成工作。我遇到了两个问题:

  • 几个小时后,我仍然没有在Windows上找到一个可以将我的表数据导出到程序/脚本中的免费工具。Jackcess(Jackcess.sourceforge.net)看起来很有希望,但是当运行下载的jar时,会弹出一个完全无关的诺基亚套件程序

  • 我已经使用pyodbc模块在python程序中打开了其中两个表,但是由于“没有读取权限”,所有其他表都无法打开。直到现在,我还以为数据库没有访问限制,因为Ubuntu上的mdb查看器可以毫无模糊地打开所有表。没有其他可用文件,只有mdb文件。一种可能是,这根本不是权限问题,而是列名中的特殊字符问题。我无法打开的所有表都至少有一个具有国家字符的列名,而我可以打开的两个表却没有。我尝试在从python调用的SQL select中使用方括号,如下所示: SQL='从SomeTable中选择[colname];' 但这没什么区别。我也无法从不包含国家字符的列中获取数据(除了两个可以工作的表)

  • 如果这确实是一个权限问题,那么我的程序也必须能够执行任何解决方案,不能有任何手动步骤

    编辑:生成mdb文件的程序的开发人员已确认对任何表都没有限制。因此,错误消息“无读取权限”具有误导性。相反,我将专注于解决我认为是列名中的国家字符的问题。我将从下面建议的JSDB方法开始。谢谢大家

    编辑2:我发现了一个我觉得很重要的发现:我可以使用pyodbc打开的所有表都有Owner=Admin,而我无法打开的所有表都没有所有者(看起来是空字符串,“Owner=”)


    编辑3:我给了JDBC一次机会。同样的错误再次出现,正如我们在编辑2中所看到的那样。显然,要解决的问题是表的所有权(尽管Linux下的MDB查看器似乎并不关心这一点……)。由于文件的创建者说他没有引入任何权限设置,我猜奇怪的表所有权可能是由于使用新程序(如2010年)读取旧程序(如90年代的某个时候)中生成的数据,或者是在旧程序的某些迁移过程中引入的。关于如何解决这个问题有什么想法吗?

    您可以使用VBScript。VBScript通常用于网页的ASP文件中,但也可以作为Windows程序单独使用

    VBScript是免费的,因为它是您在记事本中编写的代码


    其他人可能会为你提供更好的答案。祝你好运。

    看看这篇文章(针对JSDB):是的,对不起,我是说csv。问题已更新。我还没有尝试JSDB,但我已尝试从LibreOffice库连接到我的mdb。我在那里得到了相同的关于权限的错误消息,这向我表明,实际上使用了与pyodbc方法相同的db驱动程序,即{Microsoft Access驱动程序(*.mdb)}。所以我想我正在寻找替代的驱动程序,或者该驱动程序的替代版本。JSDB方法将使用什么驱动程序?VBScript与Jet/ACE配合使用效果很好,Jet/ACE是存储数据的地方。所有驱动程序都可以免费下载。请访问www.connectionstrings.com了解ADODB,尽管您也可以在VBScript(或VB.Net或C#)中使用DAO。我的客户是否需要安装MS Access才能使用VBScript从mdb中获取数据?另外,由于{Microsoft Access驱动程序(*.mdb)}似乎对我不起作用,是否有其他驱动程序可用于VBScript?不,您不需要MS Access。但是你必须安装驱动程序。另外,请确保安装了正确的驱动程序。我自己也不太了解驱动程序,但在SO中搜索这些术语以找到一些帮助:asp经典ms access ado