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)
- Покрытие кода тестами
- Нормальный режим "Insert or Update"
- Полная конфигурация логгера через .yml конфигурационный файл
- Автоматическое получений обновлений с сайта https://fias.nalog.ru
- Вставка может отваливаться по тайм-ауту