О себе События Портфолио Статьи Гостевая Фотоальбом На злобу дня Ссылки Учеба Программы
Alex_K (г.Киров) - Алексей Кощеев
Хостинг и регистрация доменов в Кирове

Интересные решения Perl. Вопросы и ответы

Как прочитать данные из файла DBF?

Иногда бывает необходимо написать парсер таблички в формате DBF.

Например, в этом формате почта России распространяет свой эталонный справочник почтовых индексов, 1С также может хранить данные в формате DBF, есть много самопального софта написанного на Delphi или C++ Bulider, которые используют этот формат.

Для решения данной задачи существуют 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 года.

Далее: Как работать с CIDR записью IP адресов в Perl?
Предыдущий вопрос:Как преобразовать русскую строку для отображения на WAP-сайте?
Перейти к списку вопросов
Fanshop.ru

Рейтинг@Mail.ru

Rambler's Top100

© Алексей Кощеев, г.Киров, 2001-2017 хостинг предоставлен компанией Айхэд