如何使用 DBI 在 Perl 中列出 Jet 数据库的表名?
是否有一种可移植的方法来列出 *.mdb
文件中的表名称 (即 Microsoft Jet 数据库,也称为“Access 数据库”)在 Perl 中?
通常我使用 Cygwin 在 Windows 上运行 Perl 脚本。
我可以使用 DBD::ODBC
模块在 *.mdb
数据库上运行 SQL 查询,但它没有实现 DBI 的 table_info
函数,这正是我所需要的。可能可以使用 DBD::ADO
和/或 Win32::OLE
模块来代替,但它们拒绝在 Cygwin 下安装,我更喜欢有一个便携式解决方案 - 理想情况下甚至可以在 Linux 上运行。
DBIx::Class::Schema::Loader
模块可用于执行此操作,并且我了解它正在升级,因此它实际上可以在 *.mdb
文件上运行,但它有一个巨大的依赖项列表,我真的不想在任何运行脚本的地方安装这些依赖项,只是为了获得这个单一的功能。
您是否曾经编写过在 *.mdb
文件中列出表名称的 Perl 代码? 您使用了哪种技术?为什么?
Is there a portable way to list the table names in *.mdb
files
(i.e. Microsoft Jet databases, also known as "Access databases") in Perl?
Usually I run my Perl scripts on Windows with Cygwin.
I can run SQL queries on *.mdb
databases just fine with the DBD::ODBC
module, but it doesn't implement DBI's table_info
function, which would do exactly what I need. The DBD::ADO
and/or Win32::OLE
modules can probably be used instead, but they refuse to install under Cygwin, and I'd prefer to have a portable solution - ideally one that even works on Linux.
The DBIx::Class::Schema::Loader
module can be used to do this, and I understand it's being upgraded so it will actually work on *.mdb
files, but it has an enormous list of dependencies that I don't really want to install wherever I run my script just to get this single function.
Have you ever written Perl code that lists the table names in an *.mdb
file?
Which technique did you use and why?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
DBD::ODBC 不支持 table_info 的谣言从何而来 - 这是我一周内第三次看到它:
Where has this rumor come from that DBD::ODBC does not support table_info - this is the third time in a week I've seen it:
如果您不想要整个内容,则只需从 DBIx::Class::Schema::Loader::DBI::ADO::MS_Jet。
If you don't want the whole thing, then just grab the necessary parts from DBIx::Class::Schema::Loader::DBI::ADO::MS_Jet.