use DBI; # использовать DBI
my $path = '.'; # каталог, где расположены таблицы БД
my $table = 'mollusc'; # DBF-файл
# подсоединиться к БД, используя драйвер DBD::XBase
my $dbh = DBI->connect("dbi:XBase:$path")
or die $DBI::errstr;
# создать таблицу определенной структуры
$dbh->do("CREATE TABLE $table (id INT,
name CHAR(35), latin CHAR(30), area CHAR(45))");
$dbh->disconnect; # отсоединиться от БД
Следующая программа в цикле заполняет созданную таблицу данными из текстового файла, добавляя в нее записи SQL-командой INSERT:
use DBI; # используем DBI
my $path = '.'; # каталог с таблицами БД
my $table = 'mollusc'; # DBF-файл
# подключаемся к БД, используя драйвер DBD::XBase
my $dbh = DBI->connect("dbi:XBase:$path")
or die $DBI::errstr;
# подготовим SQL-команду для многократного выполнения
my $sth = $dbh->prepare("INSERT INTO $table
(id, name, latin, area)
VALUES (?, ?, ?, ?)")
or die $dbh->errstr();
# в цикле читаем строки для загрузки в БД
open my $text, '<', 'mollusc.txt' or die; # файл, откуда
while (my $data = <$text>) { # читаем данные,
chomp($data); # удаляя \n
# и разбивая строку на поля по разделителю ';':
my ($id, $name, $latin, $area) = split(';', $data);
# добавляем запись, подставляя значения в команду
$sth->execute($id, $name, $latin, $area) or die;
}
close $text; # закрываем тестовый файл
$dbh->disconnect; # отсоединяемся от БД
Далее можно выполнять различные действия с данными в таблице, используя команды SQL, как это сделано в программе, где изменяются значения перечисленных колонок в записи с указанным идентификатором и удаляется запись по уникальному номеру:
use DBI; # использовать DBI
my $path = '.'; # каталог, где расположены таблицы БД
my $table = 'mollusc'; # DBF-файл
# соединиться с БД, используя драйвер DBD::XBase
my $dbh = DBI->connect("dbi:XBase:$path")
or die $DBI::errstr;
# изменить запись с указанным идентификатором,
# заменяя значения перечисленных полей на новые
$dbh->do("UPDATE $table SET name=?,area=? WHERE id=?",
undef, 'Жемчужная пинктада', 'Австралия', 89147) or die;
# удалить запись с идентификатором 93749
$dbh->do("DELETE FROM $table WHERE id=93749") or die;
$dbh->disconnect; # отсоединиться от БД
Для выборки данных из таблицы используется SQL-команда SELECT, в которой можно указывать, данные из каких колонок записи нужно включить в выборку, а также по какому условию отбирать строки таблицы:
use DBI; # использовать DBI
my $path = '.'; # каталог, где расположены таблицы БД
my $table = 'mollusc'; # DBF-файл
# соединиться с БД, используя драйвер DBD::XBase
my $dbh = DBI->connect("dbi:XBase:$path")
or die $DBI::errstr;
# выбрать у всех строк таблицы указанные поля
my $sth =
$dbh->prepare("SELECT name,area FROM $table WHERE id>?")
or die $dbh->errstr;
$sth->execute(1000) or die $sth->errstr(); # выполнить команду
while (my @row = $sth->fetchrow_array) { # и напечатать
print "@row\n"; # выбранные строки
} # в цикле по одной
$dbh->disconnect; # отсоединиться от БД
Для отображения информации из базы данных можно разработать клиентское приложение с графическим интерфейсом, используя библиотеку Perl/Tk, как это показано на рис. 15.1.
Рис. 15.1.Клиентская программа на Perl/Tk для работы с базой данных
Интерфейс DBI привлекает программистов тем, что время и усилия, потраченные на его изучение, окупаются сторицей, поскольку, научившись работать с одной базой данных, можно применять эти знания при работе со всеми остальными, включая "тяжеловесные" СУБД, которые выполняются на специализированных серверах. Сервер баз данных обычно находится на выделенном компьютере, а взаимодействие с ним строится по технологии "клиент-сервер". Это означает, что сервер принимает запросы, поступающие от пользовательских программ, выполняет указанные в запросе действия по обработке информации в базе данных, а затем отправляет результат обработки клиенту. Для повышения производительности, распределения нагрузки и обеспечения непрерывности работы такие СУБД объединяются в кластеры серверов баз данных, которые могут состоять из большого числа мощных компьютеров. Для работы с конкретной системой управления базой данных потребуется установка драйвера для этой СУБД. В хранилище модулей CPAN найдутся драйверы для всех основных серверов баз данных: IBM DB2, MS SQL Server/Sybase, Oracle, PostgreSQL и многих других. Помимо высокой скорости обработки больших объемов данных, СУБД предоставляют программисту дополнительные возможности по обработке информации. Вот основные из них.