Perl DBI DBD :: mysql从mysql服务器获取数据库名称
问题描述:
我有一台生产服务器,每天在MySql 服务器中创建不同的数据库。Perl DBI DBD :: mysql从mysql服务器获取数据库名称
我需要编写一个perl script
,在当天结束时运行 并执行以下操作。
连接到mysql服务器,并获取它拥有的所有数据库名称的列表 。然后连接到它们中的每一个并检查存储的数据。
我唯一不能做的事DBI and DBD::mysql
从mysql服务器读取数据库名称。
我无法找到任何DBI功能,如果不先连接到 数据库就可以正常工作。
任何帮助/例子/ URL将是非常有益:-)
答
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
在Sybase中,有一个标准的“主”数据库,其中存储了类似这样的信息。例如。为你的目的`master..sysdatabases`。不知道关于MySql – DVK 2010-12-06 13:56:58