NAME
FIAS::SQL - Модуль для минимальной работы с данными из базы ФИАC https://fias.nalog.ru/FiasInfo.aspx
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' );
методы модуля
- new Создание объекта
-
%params db_connection -- параметры соединения к базе dsn -- DBI Data Source Name login -- логин для подключения к базе password -- пароль для подключения к базе # Опционально additional_connection_params { # флаг для подключения к MySQL базе( опционально ) mysql_enable_utf8 => 1 }
- load_files Метод для загрузки dbf файлов в базу
-
$directory -- папка с DBF файлами $update -- флаг для обновления базы
- 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 -- Краткое наименование типа объекта
- 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
- get_sublevels_for_objects Получение списка уровней дочерних адресных объектов по id родителя
-
parentguid -- id родительского объекта Функция возвращает arrayref уровней
- get_data_for_object_by_aoguid Получение данных адресного объекта по id
-
aoguid -- id объекта Функция возвращает hashref c данными адресного объекта
- get_data_for_object_by_aoguid_array Получение данных адресного объекта по id
-
aoguid -- id объекта Функция возвращает array c данными адресного объекта
- add_object_to_base Добавление объекта в таблицу
-
table -- имя таблицы @values, список значений
- get_houses_of_address_objects Функция возвращает список домов для адресного объекта
-
Функция принимает на вход $aoguid -- родительский объект для всех домов. Функция возвращает массив из hashrefs квартир в формате { 'buildnum' => '', 'housenum' => '25', 'strucnum' => '', 'aoguid' => '53edf165-0dc2-42b7-81b5-6a87ab08c7df', 'houseguid' => '65e2fbbc-72ac-4241-b5ca-fa40eb5307fe', 'postalcode' => '241020' }; housenum -- номер дома buildnum -- номер корпуса strucnum -- номер строения postalcode -- Почтовый индекс
- get_data_for_house_by_houseguid Получение данных дома по id
-
houseguid -- id дома Функция возвращает hashref c данными дома
- get_rooms_of_address_objects Функция возвращает список квартир для дома
-
Функция принимает на вход $houseguid -- уникальный id дома Функция возвращает массив из hashrefs квартир в формате { 'postalcode' => '241020', 'roomnumber' => '', 'roomtype' => 'Не определено', 'flatnumber' => '2', 'flattype' => 'квартира', 'roomguid' => '5039b82c-7975-4494-8920-22ad28cc130b', 'houseguid' => 'cca694e2-2cf2-4f0c-8f5a-dec652833c1b' }, flatnumber -- номер квартиры, офиса и прочего flattype -- тип квартиры ( из справочника flattype ) houseguid -- Глобальный уникальный идентификатор родительского объекта (дома) roomguid -- Глобальный уникальный идентификатор помещения postalcode -- Почтовый индекс roomnumber -- Номер комнаты или помещения roomtype -- тип комнаты ( из справочника roomtype )
- get_data_for_room_by_roomguid Получение данных квартиры по id
-
roomguid -- id квартиры Функция возвращает hashref c данными квартиры
- <get_parent_record_chain_by_aoguid> Получение цепочки элементов до верхнего уровня по aoguid
-
aoguid -- id нижнего элемента Функция возвращает arrayref c данными записей [ { guid "d967adce-0608-400f-983f-d64ca6e22547", level "planning_structure" }, { guid "978c4d8c-f724-43b1-aa95-0c1fc49dc6b7", level "town" }, { aoguid "2dd692c1-fc95-41a2-86a1-6a83f47914fe", level "district" }, { guid "88cd27e2-6a8a-4421-9718-719a28a0a088", level "region" } ]
- get_parent_record_chain_by_houseguid Получение цепочки элементов до верхнего уровня по houseguid
-
houseguid -- id дома Функция возвращает arrayref c данными записей [ { guid "cca694e2-2cf2-4f0c-8f5a-dec652833c1b", level "house" }, { guid "dadfc561-e091-44b5-a07c-8d046529dfd4", level "street" }, { guid "414b71cf-921e-4bfc-b6e0-f7395d16aaef", level "town" }, { guid "f5807226-8be0-4ea8-91fc-39d053aec1e2", level "region" } ]
- get_parent_record_chain_by_roomguid Получение цепочки элементов до верхнего уровня по roomguid
-
roomguid -- id помещения Функция возвращает arrayref c данными записей [ { guid "4f13298c-e20b-4144-b90e-897ef80de2f2", level "room" }, { guid "cca694e2-2cf2-4f0c-8f5a-dec652833c1b", level "house" }, { guid "dadfc561-e091-44b5-a07c-8d046529dfd4", level "street" }, { guid "414b71cf-921e-4bfc-b6e0-f7395d16aaef", level "town" }, { guid "f5807226-8be0-4ea8-91fc-39d053aec1e2", level "region" } ]
- set_database_version Сохранение версии базы
- get_database_version Получение версии базы
- get_database_version Получение линка на актуальную базу
- get_database_version Получение версии актуальной базы
- clone_base_structure создаём таблицы в базе $destination_object -- база назначения
- show_tables Список таблиц базы
- _check_record_actuality Проверка записи из DBF на актуальность
-
$record -- запись взятая из DBF возвращаем 1(неактуально) или 0(актуально)
- _get_table_fields Функция для получения необходимых полей для записи в таблицы.
-
значения полей берём из %table_config $sql_table_name -- имя таблицы из DBF полученное обрезанием номера региона и расширения HOUSE89.DBF превращается в HOUSE $dbf_table -- объект XBase для получения полей из файлов упомянутых в $table_config
- _create_table собираем комманду 'CREATE TABLE' для создания таблицы в базе
-
$sql_table_name -- имя таблицы из DBF полученное обрезанием номера региона и расширения HOUSE89.DBF превращается в HOUSE $dbf_table -- объект XBase для получения параметров полей в таблице Для каждой таблицы получаем на выходе SQL комманду 'CREATE TABLE ...'
- _convert_data конвертируем данные полученные из DBF в соответствующие данные для SQL
-
$record -- запись $dbf_table -- объект XBase для получения данных поля DBF файла $sql_table_name -- имя таблицы из DBF полученное обрезанием номера региона и расширения HOUSE89.DBF превращается в HOUSE На выходе получаем данные DBF удовлетворяющие стандарту SQL перечисленные через запятую
- _get_formatted_date Получаем дату для SQL из даты для DBF
-
$date -- слитная дата из 8 цифр Возвращаем дату разделённую дефисами для нормального помещения в SQL
- _get_quoted_text Экранируем и декодируем полученный текст из DBF
-
$text -- текст из DBF в cp866 Возращаем удобоваримый и читаемый текст
AUTHOR
Daniil Popov <popov.daniil@gmail.com>
COPYRIGHT AND LICENSE
This software is copyright (c) 2017-2018 by Daniil Popov.
This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself.