Hej,
Potrzebuję wrzucić sporą ilość danych do powiązanych ze sobą tabel, ale przyznam szczerze nie wiem jak to zrobić wydajnie.
Mam dwie tablice NumbersTab(Id, Number) i TittlesTab (Id, Tittle, NumbersTabId).
Obecnie wgrywam dane wykorzystując dwa inserty, najpierw
Insert into NumbersTab(Number) values
(111111),
(222222),
(333333),
...
następnie kolejny z podzapytaniem
Insert into TittlesTab(Tittle, NumbersTabId) values
('Title', (Select Id from NumbersTab where Number = 111111)),
('Title', (Select Id from NumbersTab where Number = 222222)),
('Title', (Select Id from NumbersTab where Number = 333333)),
...
Id są autoiterowane, Number jest częścią wspólną dzięki któremu wiem jaki tytuł odpowiada jakiemu numerowi z tabeli NumbersTab.
Zasadniczo takie rozwiązanie się sprawdza, ale jest bardzo niewydajne, pgAdmin wywala błąd przy >4000 rekordów, wiec muszę dzielić rekordy, co jest "upierdliwe".
Normalnie stworzyłbym sobie aplikację, która wrzucała by mi te rekordy do bazy przy pomocy jakiejś buiblioteki do bulk insertowania, ale wymogiem jest skrypt :/.
Wiem, że postgreSQL udostępnia coś takiego jak funkcja COPY, ale nigdzie nie znalazłem implementacji z powiązanymi tabelami.
Będę wdzięczny za wszelkie porady i pomoc przy rozwiązaniu problemu.