Импорт КЛАДР в базу данных PostgreSQL

в 11:33, , рубрики: Песочница, метки: , ,

Конвертация КЛАДР в формат sqlite.

  1. Скачиваем кладр с официального сайта
    wget www.gnivc.ru/html/gnivcsoft/KLADR/Base.7z
  2. Устанавливаем архиватор 7z
    sudo yum install p7zip
  3. Распаковываем архив
    7za e Base.7z
  4. Устанавливаем sqlite
    sudo yum install sqlite
  5. Устанавливаем sqlite3-dbf
    sudo yum install sqlite3-dbf
  6. Запускаем sqlite3
    sqlite3 my_kladr.db
  7. В sqlite загружаем модуль libspatialite
    .load libspatialite.so.2
  8. Импорт данных из КЛАДР в sqlite
    CREATE VIRTUAL TABLE virt_street_tbl USING VirtualDbf('/home/developer/kladr/STREET.DBF', 'CP866');
    CREATE VIRTUAL TABLE virt_socrbase_tbl USING VirtualDbf('/home/developer/kladr/SOCRBASE.DBF', 'CP866');
    CREATE VIRTUAL TABLE virt_kladr_tbl USING VirtualDbf('/home/developer/kladr/KLADR.DBF', 'CP866');
    CREATE VIRTUAL TABLE virt_flat_tbl USING VirtualDbf('/home/developer/kladr/FLAT.DBF', 'CP866');
    CREATE VIRTUAL TABLE virt_doma_tbl USING VirtualDbf('/home/developer/kladr/DOMA.DBF', 'CP866');
    CREATE VIRTUAL TABLE virt_altnames_tbl USING VirtualDbf('/home/developer/kladr/ALTNAMES.DBF', 'CP866');

    create table street_tbl as select * from virt_street_tbl;
    create table socrbase_tbl as select * from virt_socrbase_tbl;
    create table kladr_tbl as select * from virt_kladr_tbl;
    create table flat_tbl as select * from virt_flat_tbl;
    create table doma_tbl as select * from virt_doma_tbl;
    create table altnames_tbl as select * from virt_altnames_tbl;

    drop table virt_street_tbl;
    drop table virt_socrbase_tbl;
    drop table virt_kladr_tbl;
    drop table virt_flat_tbl;
    drop table virt_doma_tbl;
    drop table virt_altnames_tbl;

  9. Выходим из sqlite
    .exit

Резлуьтат: файл my_kladr.db содержит КЛАДР в формате sqlite.

Подключение файла my_kladr.db к базе данных PostgreSQL

  1. Скачиваем модуль sqlite_fdw
    wget https://github.com/gleu/sqlite_fdw/archive/master.zip
  2. Устанавливаем unzip
    sudo yum install unzip
  3. Распаковываем архив
    unzip master
  4. Заходим в каталог sqlite_fdw-master
    cd sqlite_fdw-master
  5. Устанавливаем модуль
    sudo PATH=/usr/pgsql-9.3/bin/:$PATH make USE_PGXS=1 install
  6. Входим в систему из под пользователя postgres
    sudo su - postgres
  7. Входим в postgresql
    psql
  8. Выбираем базу данных
    c YourDatabase
  9. Создаем расширение
    CREATE EXTENSION sqlite_fdw;
  10. Создаем сервер
    CREATE SERVER sqlite_kladr_server

        FOREIGN DATA WRAPPER sqlite_fdw


        OPTIONS (database 'path_to_my_kladr.db');
  11. Создаем схему
    create schema kladr;
  12. Создаем внешние таблицы
    CREATE FOREIGN TABLE kladr.street_tbl(
      id bigint,
      name varchar,
      type varchar,
      code varchar,
      c2 varchar,
      c3 varchar,
      c4 varchar,
      c5 varchar)

        SERVER sqlite_kladr_server


         OPTIONS (table 'street_tbl');

    CREATE FOREIGN TABLE kladr.socrbase_tbl(
      id bigint,
      id1 bigint,
      short_name varchar,
      full_name varchar,
      id3 bigint)

        SERVER sqlite_kladr_server


         OPTIONS (table 'socrbase_tbl');

    CREATE FOREIGN TABLE kladr.kladr_tbl(
      id bigint,
      name varchar,
      type varchar,
      code varchar,
      c4 varchar,
      c5 varchar,
      c6 varchar,
      c7 bigint)

        SERVER sqlite_kladr_server


         OPTIONS (table 'kladr_tbl');

    CREATE FOREIGN TABLE kladr.doma_tbl(
      id bigint,
      house varchar,
      c1 varchar,
      c2 varchar,
      c3 varchar,
      c4 varchar,
      c5 varchar,
      c6 varchar,
      c7 varchar)

        SERVER sqlite_kladr_server


         OPTIONS (table 'doma_tbl');

    CREATE FOREIGN TABLE kladr.altnames_tbl(
      id bigint,
      code1 varchar,
      code2 varchar,
      c1 varchar)

        SERVER sqlite_kladr_server


         OPTIONS (table 'altnames_tbl');

  13. Проверяем работу
    select * from kladr.kladr_tbl limit 10;

Результат: Кладр подключен к базе данных PostgreSQL.

* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js