FIAS-SQL

 view release on metacpan or  search on metacpan

lib/FIAS/SQL.pm  view on Meta::CPAN

        elsif ( $type eq 'N' ) {
            $cell = $record->{ $name } // 0;
        }

        push @sqlcommand, $cell;
   }
   # Склеиваем данные запятыми для инсёрта
   return join( ',', @sqlcommand );
}

sub _get_formatted_date {
    my ( $date )  = @_;

    $date = sprintf( '%08d', $date ) if ( length($date) < 8 );
    $date =~ s/(\d{4})(\d{2})(\d{2})/\'$1-$2-$3\'/;

    return $date;
}

sub _get_quoted_text {
    my ( $text ) = @_;

    # Экранируем
    $text =~ s/\\/\\\\/g;
    $text =~ s/\'/\\\'/g;
    # Декодируем
    $text = decode( 'cp866', $text );

    return $text;
}
1;

__END__

=pod

=encoding utf8
=head1 DESCRIPTION Модуль для минимальной работы с данными из базы ФИАC https://fias.nalog.ru/FiasInfo.aspx
=head1 NAME
FIAS::SQL
=head1 SYNOPSIS

=head1 NAME

FIAS::SQL - Модуль для минимальной работы с данными из базы ФИАC https://fias.nalog.ru/FiasInfo.aspx

=head1 VERSION

version 0.08

    # Создание объекта, подключение к базе
    my  $fias = FIAS::SQL->new(
                                db_connection => {
                                    dsn       => 'DBI:mysql:database=fias;host=localhost;port=3306';',
                                    login     => 'user',
                                    password  => 'pass',
                                },
                                # Опциональные параметры
                                additional_connection_params => {
                                    # выставляем флаг UTF-8 для нормальной работы с unicode( опционально)
                                    mysql_enable_utf8 => 1,
                                }
    );

    # автоматическое скачивание и распаковка пока не реализованы
    # файлы брать здесь https://fias.nalog.ru/Updates.aspx ( Полная БД ФИАС, DBF )

    # Загрузка базы из текущей директории
    $fias->load_files( '.' );

    # Получение всех записей первого уровня( регионов )
    my $regions   = $fias->get_address_objects( aolevel=>'region' );

    # Получение всех субъектов региона
    my $under_region = $fias->get_address_objects( parentguid => 'ee594d5e-30a9-40dc-b9f2-0add1be44ba1' );

    # Получение всех строений находящихся на адресном объекте с aoguid '00001be9-7886-4c7b-bcfe-74bdd601b81a'
    my $houses = $fias->get_houses_for_address_objects( '00001be9-7886-4c7b-bcfe-74bdd601b81a' );

    # Получение всех помещений находящихся в строении с houseid '000012ba-2754-425c-ba4a-4c35d0771045'
    my $rooms =  $fias->get_rooms_of_address_objects( '000012ba-2754-425c-ba4a-4c35d0771045' );

=head2 методы модуля

=over

=item B<new>
    Создание объекта

    %params
        db_connection -- параметры соединения к базе
            dsn         -- DBI Data Source Name
            login       -- логин для подключения к базе
            password    -- пароль для подключения к базе
            # Опционально
            additional_connection_params {
                # флаг для подключения к MySQL базе( опционально )
                mysql_enable_utf8 => 1
            }

=item B<load_files>
    Метод для загрузки dbf файлов в базу

    $directory -- папка с DBF файлами
    $update    -- флаг для обновления базы

=item B<get_address_objects>
    Получение адресных объектов по уровню и родителю

    %params
        parentguid -- id родительского объекта
        aolevel    -- уровень получаемых объектов
            Уровень объекта может принимать только нижеперечисленные значения
            соответсвия между строками и числами указаны в хеше $LEVELS
                region(1) – уровень региона
                district(3) – уровень района
                settlement(35) – уровень городских и сельских поселений
                town(4) – уровень города
                inhabitet_locality(6) – уровень населенного пункта
                planning_structure(65) – планировочная структура
                street(7) – уровень улицы
                stead(75) – земельный участок
                structure(8) – здания, сооружения, объекта незавершенного строительства
                premises(9) – уровень помещения в пределах здания, сооружения

    Функция возвращает массив из hashrefs квартир в формате
    {
        'aolevel' => '1',
        'shortname' => 'обл',
        'offname' => 'Брянская',
        'aoguid' => 'f5807226-8be0-4ea8-91fc-39d053aec1e2'
    }
    aoguid  --  Глобальный уникальный идентификатор адресного объекта
    aolevel --  Уровень адресного объекта
    offname  --  Официальное наименование
    shortname -- Краткое наименование типа объекта

=item B<get_address_objects_guids_only>
    Получение адресных объектов по уровню и родителю, возвращаются только уникальные id объекта

    %params
        parentguid -- id родительского объекта
        aolevel    -- уровень получаемых объектов
            Уровень объекта может принимать только нижеперечисленные значения
            соответствия между строками и числами указаны в хеше $LEVELS
                region(1) – уровень региона
                district(3) – уровень района
                settlement(35) – уровень городских и сельских поселений
                town(4) – уровень города
                inhabitet_locality(6) – уровень населенного пункта
                planning_structure(65) – планировочная структура
                street(7) – уровень улицы
                stead(75) – земельный участок
                structure(8) – здания, сооружения, объекта незавершенного строительства
                premises(9) – уровень помещения в пределах здания, сооружения

    Функция возвращает arrayref из aoguids



( run in 0.614 second using v1.01-cache-2.11-cpan-d7f47b0818f )