我有一段时间帮助客户将mdb表数据导出到csv文件(然后进一步处理这些csv文件)。我使用过Ubuntu,所以我可以使用mdbtools(mdb viewer)。现在,客户希望我以Windows程序的形式自动完成我的工作。我遇到了两个问题:
几个小时后,我仍然没有在Windows上找到一个可以以我可以合并到程序/脚本中的方式导出表数据的免费工具。 Jackcess(jackcess.sourceforge.net)看起来很有希望,但是当运行下载的jar时,会弹出一个完全不相关的诺基亚套件程序......
我已经设法使用pyodbc模块在python程序中打开了两个表,但由于“没有读取权限”,所有其他表都无法打开。到目前为止,我认为数据库没有访问限制,因为Ubuntu上的mdb查看器打开所有表而没有任何模糊。没有其他文件可用,只有mdb文件。一种可能性可能是这根本不是权限问题,而是列名中的特殊字符问题。我无法打开的所有表都至少有一个带有国家字符的列名,而我可以打开的两个表没有。我尝试在从python调用的SQL select中使用方括号,如下所示: SQL ='来自SomeTable的SELECT [colname];' 但它没有任何区别。我无法从不包含国家字符的列中获取数据(除了两个有效的表格之外)。
如果确实存在权限问题,我的程序也必须能够执行任何解决方案,不得有任何手动步骤。
编辑:生成mdb文件的程序的开发人员已确认对任何表没有限制。因此,错误消息“无读取权限”具有误导性。相反,我将专注于解决我认为列名中的国家字符问题。我将从下面建议的JSDB方法开始。谢谢大家!
编辑2:我发现我觉得很重要:我可以使用pyodbc打开的所有表都有Owner = Admin,而我无法打开的所有表都没有所有者(似乎是空字符串,“Owner =” )。
编辑3:我给了JDBC一个镜头。同样的错误,正如编辑2中的发现所预期的那样。显然要解决的问题是表所有权(尽管Linux下的MDB Viewer似乎并不关心...)。由于文件的创建者说他没有引入任何权限设置,我猜奇怪的表所有权可能是使用新程序(如2010)读取旧程序中产生的数据(如90年代某些时候)的结果,或者在旧程序的一些迁移过程中引入。关于如何解决它的任何想法?
答案 0 :(得分:3)
您可以使用VBScript。 VBScript通常用于网页的ASP文件,但也可以作为Windows程序单独使用。
VBScript是免费的,因为它是你在记事本中编写的代码。
其他人可能会为您提供更好的答案。祝你好运。