Perl DBI DBD :: mysql从mysql服务器获取数据库名称

Perl DBI DBD :: mysql从mysql服务器获取数据库名称

问题描述:

我有一台生产服务器,每天在MySql 服务器中创建不同的数据库。Perl DBI DBD :: mysql从mysql服务器获取数据库名称

我需要编写一个perl script,在当天结束时运行 并执行以下操作。

连接到mysql服务器,并获取它拥有的所有数据库名称的列表 。然后连接到它们中的每一个并检查存储的数据。

我唯一不能做的事DBI and DBD::mysql 从mysql服务器读取数据库名称。

我无法找到任何DBI功能,如果不先连接到 数据库就可以正常工作。

任何帮助/例子/ URL将是非常有益:-)

+0

在Sybase中,有一个标准的“主”数据库,其中存储了类似这样的信息。例如。为你的目的`master..sysdatabases`。不知道关于MySql – DVK 2010-12-06 13:56:58

use DBI; 
use strict; 
use warnings; 
my $dbh = DBI->connect('dbi:mysql:information_schema', $ENV{'USER'}, $ENV{'PASSWD'}, { 'RaiseError' => 1 }); 
my $databases = $dbh->selectcol_arrayref('show databases'); 

use Data::Dumper; 
print Dumper $databases; 
__END__ 
$VAR1 = [ 
     'information_schema', 
     'mysql', 
     'your_database_1', 
     'your_database_2' 
    ]; 

只有数据库授权你会显示连接的用户。

+0

谢谢:-)工作,我已经将它添加到我的代码,它的作品就像一个魅力:-)再次感谢你。 – 2010-12-08 06:16:04

尝试使用INFORMATION_SCHEMA数据库 - 该数据库名始终存在,因此可以硬编码到DBI。

more specific,相当于SHOW DATABASES是:

SELECT SCHEMA_NAME AS `Database` 
FROM INFORMATION_SCHEMA.SCHEMATA