Утилита предназначена для конвертации выгрузок БД ФИАС в формате XML (и в формате ГАР), представленных на сайте https://fias.nalog.ru/Updates, в файл базы данных SQLite и/или PostgreSQL. Сохраняет содержимое выгрузок в виде набора таблиц, схема которых строится на основе xsd-файлов.
Скачайте файл fiaser-0.2.0-standalone.jar со страницы релизов или используйте
lein uberjar
для сборки из исходного кода.
Необходимо загрузить полную БД ФИАС в формате XML (или БД ГАР ФИАС) и схемы соответствующего формата. Схемы выгружаются по ссылкам "XSD схемы выгрузки БД в формате ГАР" или "XSD схемы выгрузки БД ФИАС в формате XML". Следует распаковать загруженные файлы, указать необходимые параметры в конфигурационном файле и запустить конвертацию:
$ java -jar fiaser-0.2.0-standalone.jar [path/to/config.edn]
:sources
. Источники данных для конвертации.:xml-dir
. Определяет расположение каталога с данными ФИАС.:xsd-dir
. Определяет расположение каталога со схемами ФИАС.
:targets
. Цели конвертации:enabled?
. Включить/выключить конвертацию.:sqlite
. Параметры конвертации в SQLite.:file
. Определяет имя и местоположение выходного файла SQLite.
:postgres
. Параметры конвертации в PostgreSQL.:host
. Адрес сервера.:port
. Порт сервера.:user
. Имя пользователя.:dbname
. Имя базы данных.:schema
. Имя схемы. При отсутствии будет создана автоматически.:tablespace
. Имя табличного пространства. Опциональный параметр. В случае указания, на момент старта конвертации табличное пространство должно быть создано. Все таблицы будут созданы в указанном табличном пространстве.:password
. Пароль пользователя БД.
На данный момент поддерживается работа только с полной (не дельта) выгрузкой ФИАС.
При обработке данные проверяются на соответствие модели, описанной в xsd-схеме. На данный момент (октябрь 2020) данные ФИАС полностью проходят валидацию по своей модели и конвертируются без ошибок. Данные в новом формате ГАР ФИАС имеют ошибки как на уровне схем, так и уровне данных. Ниже приведен список известных ошибок:
- В файле схемы
AS_PARAM_2_251_02_04_01_01.xsd
отсутствует известный тип поляOBJECTID
. При конвертации будет использован типtext
. - Файлы схем
AS_CHANGE_HISTORY_251_21_04_01_01.xsd
,AS_ADM.HIERARCHY_2_251_04_04_01_01.xsd
,AS_ADDR.OBJ.DIVISION_2_251_19_04_01_01.xsd
иAS_MUN.HIERARCHY_2_251_10_04_01_01.xsd
имеют одинаковые имена коллекций и элементов: ITEMS/ITEM. Это создает коллизию имен коллекций справочника. Утилита конвертации исправляет данную ошибку подменой имен коллекций и элементов для определенных файлов схем и соответствующих файлов данных. - Структура xsd-схемы
AS_NORMATIVE.DOCS.KINDS_2_251_09_04_01_01.xsd
, в отличие от остальных, имеет заголовочную части коллекции. - Часть данных не проходит валидацию по схеме
AS_PARAM_2_251_02_04_01_01.xsd
по причине отсутствия обязательного поляVALUE
(Значение параметра). Такие записи при конвертации пропускаются, их идентификаторы выводятся вstdout
.
Copyright © 2020 Vadim Komarov
This program and the accompanying materials are made available under the terms of the Eclipse Public License 2.0 which is available at http://www.eclipse.org/legal/epl-2.0.
This Source Code may also be made available under the following Secondary Licenses when the conditions for such availability set forth in the Eclipse Public License, v. 2.0 are satisfied: GNU General Public License as published by the Free Software Foundation, either version 2 of the License, or (at your option) any later version, with the GNU Classpath Exception which is available at https://www.gnu.org/software/classpath/license.html.