Skip to content

Sm1Le55/fias-to-pg

Repository files navigation

Импорт данных из ФИАС (формат DBF) в PostgreSQL version


Предварительная (ознакомительная) версия. Содержит баги, проблемы и не оттестирована


Note: При разработке вдохновение черпалось из скриптов asyncee/fias2pgsql

Краткое описание

Импортирует таблицы ADDROBJ##.DBF, HOUSE##.DBF и SOCRBASE.DBF в базу PostgreSQL (addrobj, house, socrbase). Таблицы создаются в схеме fias.

На текущий момент программа выполняет следующие операции:

  • Включает дополнение pg_trgm
  • Удаляет таблицы в БД (опционально)
  • Создает таблицы в БД (опционально)
  • Создает индексы в таблице addrobj (при создании)
  • Перебирает файлы в каталоге, считывает и загружает в таблицы (может ЛИБО добавлять записи, ЛИБО обновлять)
  • Удаляет неактуальные объекты в таблице addrobj (опционально)

Разработка и проверка работоспособности проводилось на postgresql версии 11.х.х

Использование

Предполагается что у вас уже установлен postgresql и postgresql-client. Скомпилировать бинарный файл для необходимой Вам системе и настроить config.yml для работы в Вашей системе. Скомпилированные бинарные файлы и config.yml находятся в папке bin

Конфигурационный файл config.yml:

# Database credentials
database:
  user: "pguser" #Пользователь для доступа к БД
  pass: "password" #Пароль для доступа к БД
  address: "127.0.0.1:5432" #Адрес БД
  dbname: "pgdatabase" #Имя БД

# DBF configurations
dbf:
  codepage: "CP866" #Кодировка DBF-файлов
  folder: './fias_delta_dbf/' #Расположение DBF-файлов
  threads: 10 #Количество одновременно обрабатываемых файлов

# Logger configurations
log:
  path : './logger.log' #Путь к лог-файлу

# Program configurations
program:
  update: false #Признак обновления записей true - обновляет записи, false - добавляет новые игнорирую существующие  
  droptables: false #Признак необходимости удаления таблиц перед импортом  
  createtables: false #Признак необходимости создания таблиц перед импортом
  dropirrelevantrows: true #Признак необходимости удаления неактуальных адресных объектов (таблица addrobj, условие: livestatus != 1 AND currstatus != 0)

Roadmap

  • Покрытие кода тестами
  • Нормальный режим "Insert or Update"
  • Полная конфигурация логгера через .yml конфигурационный файл
  • Автоматическое получений обновлений с сайта https://fias.nalog.ru

Известные проблемы

  • Вставка может отваливаться по тайм-ауту

About

Import FIAS to PostgreSQL

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages