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

发布于 2024-10-05 22:23:43 字数 282 浏览 4 评论 0原文

我有一个生产服务器,每天在 MySql 中创建不同的数据库 服务器。

我需要编写一个在一天结束时运行的 perl 脚本 并执行以下操作。

连接到mysql服务器并获取所有数据库名称的列表 确实如此。然后连接到每个设备并检查存储的数据。

我唯一无法使用 DBI 和 DBD::mysql 做的事情 从 mysql 服务器读取数据库名称。

我找不到任何无需连接即可工作的 DBI 功能 首先是数据库。

任何帮助/示例/URL 都会非常有帮助:-)

I have a production server that creates different databases everyday in a MySql
server.

i need to write a perl script that would run at the end of the day
and do the following.

connect to the mysql server and get the list of all the names of the databases
it has. then connect to each of them and check the data that was stored.

the only thing i wasn't able to do with DBI and DBD::mysql
was read the database names from the mysql server.

i wasn't able to find any DBI function that would work without connecting to a
database first.

any help/example/URL would be very helpful :-)

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

寻找一个思念的角度 2024-10-12 22:23:43
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'
    ];

仅显示授权给您连接的用户的数据库。

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'
    ];

Only databases authorized to the user you connect with will be shown.

初心 2024-10-12 22:23:43

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

更具体,相当于显示数据库是:

SELECT SCHEMA_NAME AS `Database`
FROM INFORMATION_SCHEMA.SCHEMATA

Try using INFORMATION_SCHEMA database - that database name always exists and thus can be hard-coded into DBI.

To be more specific, the equivalent to SHOW DATABASES is:

SELECT SCHEMA_NAME AS `Database`
FROM INFORMATION_SCHEMA.SCHEMATA
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文