Загрузка КЛАДР в PostgreSQL

Не могу понять с чего начать. Ткните где почитать, или может какой пример есть?

Опции просмотра комментариев

Выберите предпочитаемый вами способ показа комментариев и нажмите "Сохранить настройки" для активации изменений.

А в каком виде у

А в каком виде у вас КЛАДР?
Нужно создать структуру БД, соответствующую данным КЛАДР, а дальше скрипт/инструмент, который загрузит данные в БД согласно структуре.

Со структурой

Со структурой нет проблем, нашел

CREATE SEQUENCE "public"."sequence8"
    INCREMENT 1  MINVALUE 1
    MAXVALUE 9223372036854775807  START 1
    CACHE 1;
 
CREATE SEQUENCE "public"."sequence9"
    INCREMENT 1  MINVALUE 1
    MAXVALUE 9223372036854775807  START 1
    CACHE 1;
 
CREATE TABLE "public"."kladr" (
  "id" INTEGER DEFAULT NEXTVAL('sequence8'::regclass) NOT NULL, 
  "name" VARCHAR(40) NOT NULL, 
  "socr" VARCHAR(10) NOT NULL, 
  "code" VARCHAR(13) NOT NULL, 
  "index" VARCHAR(6), 
  CONSTRAINT "kladr_pkey" PRIMARY KEY("id";)
) WITHOUT OIDS;
 
CREATE TABLE "public"."street" (
  "id" INTEGER DEFAULT NEXTVAL('sequence9'::regclass) NOT NULL, 
  "name" VARCHAR(40) NOT NULL, 
  "socr" VARCHAR(10) NOT NULL, 
  "code" VARCHAR(17) NOT NULL, 
  "index" VARCHAR(6), 
  CONSTRAINT "street_pkey" PRIMARY KEY("id";)
) WITHOUT OIDS;

а вот "скрипт/инструмент, который загрузит данные в БД", даже не знаю с какой стороны подойти

Я ведь спросил -

Я ведь спросил - в каком виде у вас КЛАДР?
Или у вас данных вообще нет и их надо забивать в БД вручную?

Не понял. БД

Не понял.
БД PostgreSQL - пустая. КЛАДР взял с диска 1С ИТС (KLADR.DBF, KLADR.CDX, Kladr1.CDX, STREET.DBF, STREET.CDX, Street1.CDX, ...), чтоб из инета не качать.

А! Ну тогда вам

А! Ну тогда вам нужен конвертер из DBF в PostgreSQL. Либо ищите готовый (но сомневаюсь что найдёте бесплатный), либо пишите сами, например на perl-DBI. Есть DBI драйверы как для DBF так и для PostgreSQL.

Спасибо за ответы

Спасибо за ответы, еще появился вопрос, структура не создается, ругается на

"id" INTEGER DEFAULT NEXTVAL('sequence8'::regclass) NOT NULL,

EMS выдает: отношение "sequence8" не существует
хотя, это отрабатывает без ошибок
CREATE SEQUENCE "public"."sequence8"
    INCREMENT 1  MINVALUE 1
    MAXVALUE 9223372036854775807  START 1
    CACHE 1;
 
CREATE SEQUENCE "public"."sequence9"
    INCREMENT 1  MINVALUE 1
    MAXVALUE 9223372036854775807  START 1
    CACHE 1;

что тут не так?

без проблем

Убрал из Ваших примеров создания таблиц ; в строках:

CONSTRAINT "kladr_pkey" PRIMARY KEY("id";)
CONSTRAINT "street_pkey" PRIMARY KEY("id";)

и запрос отработал без проблем.

это конечно

это конечно ошибка, но EMS все равно ругается

ERROR: ошибка синтаксиса в или рядом ":"
LINE 1: ..."kladr" ( "id" INTEGER DEFAULT nextval('sequence8':regclass)...

здесь я с ним

здесь я с ним соглашусь, косяк на лицо

(посмотрите хотя бы свой предыдущий пост и найдите 10 отличий.. хотя и одного будет достаточно :))

просто

Попробуйте открыть DBF в Excel/OpenOffice и сохранить как текст с разделителем-табуляцией.
Далее COPY.
Успехов!

можно

можно загрузить таблицы через ODBC при помощи MSAccess или OpenOffice.Base

не подскажите где можно взять dbf2pg

не подскажите где можно взять dbf2pg желательно RPM (для CentOS 5.2) ?

В csv можно перегнать с

Изображение s3men

В csv можно перегнать с помощью dbf2csv, потом COPY. Ибо soffice больше 65535 строк не хавает :(

Опции просмотра комментариев

Выберите предпочитаемый вами способ показа комментариев и нажмите "Сохранить настройки" для активации изменений.

Back to top

(С) Виктор Вислобоков, 2008-2023