Konwersja istniejacej bazy PostgreSQL

0

Witam,Mam nastepujaca baze danych:- PostgreSQL- wiele roznych relacji miedzy tabelami- w bazie jest juz sporo danych (wazy okolo 2 GB)Problem z baza jest nastepujacy:- baza powolno dziala- zamiast kluczy glownych (primary key) numerycznych uzywane sa klucze typu VARCHAR (wiem, ze zaglada, ale nie ja to projektowalem)Zalezy mi na przeksztalceniu bazy na taka, w ktorej klucze glowne beda numeryczne, a relacje i zbior danych w bazie zachowane. Pytanie jak najprosciej sie za to zabrac..

0

Ile masz tych tabel? Zrób kopie bazy. Następnie pozamieniaj w tabelkach varchara na id SERIAL, albo sekwencja: :)

CREATE TABLE example(
    id integer NOT NULL,
    nazwa text
);

CREATE SEQUENCE exapmple_id_seq
    START WITH 1
    INCREMENT BY 1
    NO MINVALUE
    NO MAXVALUE
    CACHE 1;

ALTER TABLE ONLY example ALTER COLUMN id SET DEFAULT nextval('exapmple_id_seq'::regclass);
0
  1. Tworzymy kopie struktury bazy danych dodając w tabelach kolumnę id jako primary. Nie nakładamy żadnych relacji. ZERO NULL NIC.
  2. Piszemy prosty program, który będzie przenosił dane w najprostszy i najprymitywniejszy sposób - Insert from select.
  3. Odtwarzamy złączenia pomiędzy tabelami zamieniając stare klucze na nowe. I tu jest pies pogrzebany, bo trzeba by rozrysować strukturę zależności tabel i robić ten etap od dołu tzn. najpierw tabele z odwzorowaniami na siebie same i bez odwzorowań, a potem tabele z odwzorowaniami na inne tabele.
  4. Odtwarzamy indeksy, wyzwalacze
  5. Poprawiamy procedury składowane i funkcje tak by działały z nową strukturą.

1 użytkowników online, w tym zalogowanych: 0, gości: 1