2015-09-08 1 views
1

Можно ли включать отношения «многие ко многим» при запуске команды Postgres COPY? Если да, можете ли вы привести мне пример?От многих до многих отношений с Postgres Команда COPY

Например:

CREATE TABLE "lap" (
    "id" serial NOT NULL PRIMARY KEY, 
    "Lap_number" integer, 
    "Lap_time" interval, 
) 
; 
CREATE TABLE "datasinglerace_Laps" (
    "id" serial NOT NULL PRIMARY KEY, 
    "datasinglerace_id" integer NOT NULL, 
    "lap_id" integer NOT NULL REFERENCES "lap" ("id") DEFERRABLE INITIALLY DEFERRED, 
    UNIQUE ("datasinglerace_id", "lap_id") 
) 
; 
CREATE TABLE "datasinglerace" (
    "id" serial NOT NULL PRIMARY KEY, 
    "Notes" text, 
) 
; 
ALTER TABLE "datasinglerace_Laps" ADD CONSTRAINT "datasinglerace_id_refs_id_620382df" FOREIGN KEY ("datasinglerace_id") 
    REFERENCES "datasinglerace" ("id") DEFERRABLE INITIALLY DEFERRED; 

Поясной объекты уже находятся в БД. Для файла COPY я хотел бы поместить информацию для datasingleraceid и список объекта lap object id, который я хочу добавить. Там будет переменное количество объектов круга, которые я хочу прикрепить.

Этот SQL был создан с использованием инфраструктуры Django. Я хочу сохранить это в структуре Django, поэтому я не хочу менять SQL. Импорт данных был очень медленным, поэтому я работаю над улучшением скорости импорта данных.

ответ

0

Вы можете использовать COPY, чтобы улучшить скорость импорта данных после выключения - я бы не использовал его нормально - вы изолировали шею бутылки? С чего вы копируете? Вам понадобится что-то вроде файлов CSV с той же структурой, что и таблицы.

10 копирует непосредственно в PostgreSQL, это не имеет никакого отношения к Django, поэтому вам нужно будет взаимодействовать с Postgres, используя pgsql или любой другой инструмент, который вы используете. Ваша команда будет выглядеть следующим образом:

COPY datasinglerace FROM datasinglerace.csv; 
COPY datasinglerace_Laps FROM datasinglerace_Laps.csv; 

COPY имеет много вариантов увидеть documentation.

Обратите внимание, что все, на что ссылается что-то еще, необходимо добавить в первую очередь, иначе вам нужно будет расслабиться (удалить, а затем добавить обратно) свои ссылочные ограничения. В этом случае вам понадобится COPY datasinglerace_Laps last, поэтому ссылки уже существуют

+0

Я обрабатываю данные и импортирую их в db. Шея бутылки - это скорость импорта из-за огромного набора данных. В настоящее время я использую команду Postgres COPY. Я делаю одну КОПИЮ, где я создаю datasinglerace и другую КОПИЮ, где я заполняю таблицу datasinglerace_Laps ссылками на строку круга и строку datasinglerace. Я подозреваю улучшение производительности, если я могу использовать команду COPY для создания datasinglerace и одновременно заполнить m2m для моделей Lap. – brian

+0

Я упомянул Django, потому что изменение способа моделирования данных не является чем-то, что я рассматриваю на данном этапе, если он не подходит в ORM Django. Это чистая проблема Postgres. – brian

+0

Итак, в чем проблема, просто выполняя КОПИЮ в правильном порядке и должна работать правильно? – markmnl