2010-12-06 12 views
2

MySql サーバに毎日異なるデータベースを作成するプロダクションサーバがあります。Perl DBI DBD :: mysqlはmysqlサーバからデータベース名を取得します

の末日に実行されるperl scriptを書く必要があります。

mysqlサーバに接続し、データベースのすべての名前のリストを取得します。 それぞれに接続し、保存されたデータを確認します。

私ができなかったのはDBI and DBD::mysql です。mysqlサーバからデータベース名が読み込まれました。

最初に データベースに接続せずに動作するDBI関数を見つけることができませんでした。

任意のヘルプ/例/ URLは

+0

Sybaseには、標準の「マスター」データベースがあり、そのような情報が格納されています。例えば。あなたの目的のために 'master..sysdatabases'です。 MySqlについてよくわからない – DVK

答えて

4
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

ありがとうございました:-)それは私のコードに追加してあり、それは魅力のように動作します:-)再びありがとうございます。 –

+0

+1。この回答は3年以上経っても保持されます。 – slayedbylucifer

4

:-)非常に参考になるINFORMATION_SCHEMAデータベースを使用してみてください - そのデータベースの名前が常に存在するため、DBIにハードコーディングすることができます。

more specific的には、SHOW DATABASESと同等です:

SELECT SCHEMA_NAME AS `Database` 
FROM INFORMATION_SCHEMA.SCHEMATA 
関連する問題