![]() ![]() |
Интересные решения Perl. Вопросы и ответыКак прочитать данные из файла DBF?Иногда бывает необходимо написать парсер таблички в формате DBF. Например, в этом формате почта России распространяет свой эталонный справочник почтовых Для решения данной задачи существуют Perl-модули DBI (универсальный модуль для создания единого программного интерфейса при работе с разными базами данных) и DBD::XBase (реализует работу с DBF-файлами). Вот пример кода, который работает со списком почтовых индексов: use strict;
use DBI;
my $fileName = 'PIndx05';
my $dbh = DBI->connect("DBI:XBase:./") or die $DBI::errstr;
my $sth = $dbh->prepare("SELECT INDEX, REGION, AUTONOM, INDEXOLD
FROM $fileName") or die $dbh->errstr;
$sth->execute() or die $sth->errstr;
while ( my $arr = $sth->fetchrow_arrayref ) {
$arr->[1] = $arr->[1];
$arr->[2] = $arr->[2];
$arr->[1] = $arr->[2] if $arr->[2] ne '';
$arr->[3] = 0 if $arr->[3] eq '';
print "$arr->[0]\t$arr->[1]\t$arr->[3]\n";
}
Предполагается, что файл PIndx05.DBF находится в текущей рабочей директории. При работе с эталонным справочником почтовых индексов вам может потребоваться функция для конвертации строки из кодировки DOS (cp866) в кодировку Windows (cp1251). Кстати, для Total Commander (точнее его вьювера Lister) существует плагин CDBFview, который позволяет просматривать DBF-файлы. Его использование может облегчить понимание структуры и содержимого файла. Опубликовано: 10 апреля 2011 года.
|
|
© Алексей Кощеев, г.Киров, 2001-2023 |
|