Читаем Язык программирования Perl полностью

use XBase; # модуль работы с БД в формате DBF my $table = XBase->create( # метод создания таблицы "name" => "mollusc.dbf", # имя файла # имена полей (колонок, столбцов) таблицы: "field_names" => ["ID", "NAME", "LATIN", "AREA"], # типы данных (N - число, C - строка, D - дата): "field_types" => [ "N", "C", "C", "C"], # максимальные длины полей: "field_lengths" => [ 5, 35, 30, 45], # длины дробной части (для чисел): "field_decimals" => [ 0, undef, undef, undef] ); $table->close(); # метод закрытия файла БД

Далее потребуется программа добавления данных в созданную таблицу из текстового файла. Например, такая:

use XBase; # модуль работы с БД в формате DBF my $table = new XBase "mollusc.dbf" # конструктор DBF or die Xbase->errstr; # обработка ошибок my $recno = 0; # добавляемые записи нумеруются с нуля open my $text, '<', 'mollusc.txt' or die; # файл, откуда while (my $data = <$text>) { # читаем данные, chomp($data); # удаляя \n # и разбивая строку на поля по разделителю ';': my ($id, $name, $latin, $area) = split(';', $data); # добавляем запись, указывая поля в порядке создания $table->set_record($recno, $id, $name, $latin, $area); $recno++; # и увеличиваем счетчик записей } close $text; # закрываем тестовый файл $table->close(); # и файл базы данных

Модуль XBase предоставляет все необходимые методы для работы с таблицами баз данных. Многие из них основаны на возможности произвольного доступа к любой записи DBF-файла по ее номеру. Например, таким образом можно прочитать, изменить или удалить запись по номеру $record_number:

# считать запись в хэш, с доступом к нему по ссылке: my $hash_ref = $table->get_record_as_hash($record_number); # изменить значение поля NAME на $table->update_record_hash($record_number, 'NAME' => $new); # пометить запись как логически удаленную $table->delete_record($record_number); # восстановить логически удаленную запись $table->undelete_record($record_number);

По поводу двух последних операций нужно сделать следующее пояснение. Дело в том, что записи в DBF-файле не удаляются физически, а только помечаются как удаленные. "Логически" удаленные записи игнорируются при обработке данных, но существуют в таблице "физически". Поэтому запись, помеченную как удаленная, можно восстановить для дальнейшей обработки. Один из способов прочитать записи таблицы - выбрать их во временный список записей, называемый курсором, откуда последовательно извлекать их в цикле. Это делается так:

my $cursor = $table->prepare_select("NAME", "LATIN", "AREA"); while (my @record = $cursor->fetch) { # прочитать запись print "@record\n"; # обработать запись }

В модуле XBase реализовано много других методов для работы с DBF-файлами и дополняющими их индексными файлами, которые предназначены для организации быстрого поиска записей в таблице.

Перейти на страницу:

Похожие книги