INSERT INTO skalowania (id_skali, skalowanie, opis, estymacja, do_prezentacji, data) VALUES (ID_SKALI, SKALOWANIE, 'OPIS', 'ESTYMACJA', TRUE/FALSE, now());
gdzie:
SELECT * FROM skalowania WHERE id_skali = ID_MOJEJ_SKALI
INSERT INTO skalowania_grupy (id_skali, skalowanie, grupa) VALUES (ID_SKALI, SKALOWANIE, 'GRUPA');
gdzie:
DELETE FROM skalowania_elementy WHERE (id_skali, skalowanie) = (ID_SKALI, SKALOWANIE); DELETE FROM skalowania_obserwacje WHERE (id_skali, skalowanie) = (ID_SKALI, SKALOWANIE);
gdzie (ID_SKALI, SKALOWANIE) identyfikują nasze skalowanie w bazie danych.
Uwaga, usuwanie rekordów z tablicy skalowania_obserwacje może zająć bardzo dużo czasu (ze względu na liczbę danych przechowywanych w tej tablicy).
W wyniku czynności wstępnych powinniśmy dysponować parą wartości ID_SKALI i SKALOWANIE, które identyfikują skalowanie, którego wyniki chcemy wprowadzić do bazy.
Oszacowania można importować na dwa sposoby:
Niezależnie od sposobu, wypełniana jest tablica skalowania_obserwacje o następującej strukturze:
Dla każdego oszacowania (w wypadku PV dla każdego PV z osobna) wykonujemy zapytanie (wartości kapitalikami należy wypełnić stosownymi danymi):
INSERT INTO skalowania_obserwacje (id_skali, skalowanie, id_obserwacji, id_testu, estymacja, nr_pv, wynik, bl_std, grupa) VALUES (ID_SKALI, SKALOWANIE, ID_OBSERWACJI, ID_TESTU, 'ESTYMACJA', NR_PV, WARTOSC_OSZACOWANIA, null, 'GRUPA');
INSERT INTO skalowania_obserwacje (id_skali, skalowanie, id_obserwacji, id_testu, estymacja, nr_pv, wynik, bl_std, grupa) VALUES (ID_SKALI, SKALOWANIE, ID_OBSERWACJI, ID_TESTU, 'ESTYMACJA', -1, WARTOSC_OSZACOWANIA, BLAD_OSZACOWANIA, 'GRUPA');
unzip NazwaPliku.zip
screen psql -h 10.0.1.7 -U MojaNazwaUżytkownika ewd
\copy skalowania_obserwacje from 'nazwaPliku.csv' with csv delimiter 'separatorUżytyWPlikuCSV' null '' header;
\q
W wypadku importu dużych ilości oszacowań znaczne przyspieszenie można uzyskać usuwając na czas importu ograniczenia kluczy obcych tablicy skalowania_obserwacje, a następnie przywracając je po zakończeniu importu. Zysk polega na tym, że klucze obce sprawdzane są wtedy raz, hurtowo, a nie dla każdego importowanego rekordu oddzielnie.
Rozwiązanie to ma jedno poważne ograniczenie - usuwanie i dodawanie ograniczeń kluczy obcych wymaga bycia właścicielem tablicy lub praw administratora. Niemniej gdyby ktoś takowe prawa posiadał:
ALTER TABLE skalowania_obserwacje DROP CONSTRAINT skalowania_obserwacje_estymacja_fkey; ALTER TABLE skalowania_obserwacje DROP CONSTRAINT skalowania_obserwacje_id_skali_fkey; ALTER TABLE skalowania_obserwacje DROP CONSTRAINT skalowania_obserwacje_id_testu_fkey; DROP INDEX skalowania_obserwacje_testy_index;
ALTER TABLE skalowania_obserwacje ADD FOREIGN KEY (estymacja) REFERENCES sl_estymacje_obserwacji(estymacja); ALTER TABLE skalowania_obserwacje ADD FOREIGN KEY (id_skali, skalowanie) REFERENCES skalowania(id_skali, skalowanie); ALTER TABLE skalowania_obserwacje ADD FOREIGN KEY (id_testu, id_obserwacji) REFERENCES testy_obserwacje(id_testu, id_obserwacji); CREATE INDEX skalowania_obserwacje_testy_index ON skalowania_obserwacje (id_obserwacji, id_testu);