Оптимизация SQL-функции под КЛАДР

Рейтинг: 1Ответов: 1Опубликовано: 20.01.2023

Делаю на С# приложение для оптимизации поиска адреса используя КЛАДР. Нашёл статейку для PostgreSQL, а сам планировал сделать все в SQLite и просто таскать с собой эту базу. Вот вопрос - целесообразно ли будет эту статейку переписать под SQLite?

Ответы

▲ 1

https://gist.github.com/maxp/6f9ff80825666102f446

В первой части вот этой статьи кладр загоняют в sqlite. Добавьте индексы и можно пользоваться.

!READ FIRST! http://sqlite.mobigroup.ru/wiki?name=sqlite3-dbf http://sqlite.mobigroup.ru/wiki?name=sqlite3-kladr

Orig: http://www.opennet.ru/tips/2862_postgresql_kladr.shtml

Конвертация КЛАДР (классификатор адресов России) в формат sqlite.

Скачиваем КЛАДР с официального сайта

wget http://www.gnivc.ru/html/gnivcsoft/KLADR/Base.7z

Устанавливаем архиватор 7z

sudo yum install p7zip

Распаковываем архив

7za e Base.7z

Устанавливаем sqlite

sudo yum install sqlite

Устанавливаем sqlite3-dbf

sudo yum install sqlite3-dbf

Запускаем sqlite3

sqlite3 my_kladr.db

В sqlite загружаем модуль libspatialite

.load libspatialite.so.2

Импорт данных из КЛАДР в 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;

Выходим из sqlite

.exit

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