postgres bazaOne to bazaTwo

      Możliwość komentowania postgres bazaOne to bazaTwo została wyłączona
\c bazatwo
ALTER TABLE rodzic2 ADD COLUMN old_id_from_bazaOne int;
ALTER TABLE dziecko2 ADD COLUMN old_id_from_bazaOne int;
CREATE EXTENSION dblink;
CREATE VIEW viewBazaOne AS
SELECT *
FROM dblink('dbname=bazaone', 'SELECT
r.imie as rimie,
r.nazwisko as rnazwisko,
r.id as rid,
d.imie as dimie, d.data_urodzenia as dage, d.id as did
FROM dziecko d
RIGHT JOIN rodzic r ON r.id = d.rodzic1id OR r.id = d.rodzic2id;')
AS t1(
rimie text,
rnazwisko text,
rid int,
dimie text,
dage date,
did int);
DO
$do$
DECLARE
rec record;
iddziecko2 dziecko2.id%TYPE;
idRodzic2 rodzic2.id%TYPE;
tx text;
BEGIN
TRUNCATE dziecko_rodzic CASCADE;
DELETE FROM rodzic2;
DELETE FROM dziecko2;
FOR rec IN SELECT * FROM viewbazaone
LOOP
IF EXISTS(SELECT old_id_from_bazaone FROM rodzic2 WHERE old_id_from_bazaone = rec.rid)
THEN
RAISE NOTICE 'rodzic(%) alerdy exists in baza2', rec.rid;
ELSE
INSERT INTO rodzic2(imie,nazwisko,old_id_from_bazaone) VALUES (rec.rimie,rec.rnazwisko,rec.rid);
END IF;
IF (rec.did) is not null
THEN
INSERT INTO dziecko2 (imie,data_urodzenia,old_id_from_bazaone) VALUES (rec.dimie,rec.dage,rec.did);
iddziecko2:=(SELECT id FROM dziecko2 WHERE old_id_from_bazaone = rec.did LIMIT 1);
idRodzic2:= (SELECT id FROM rodzic2 WHERE old_id_from_bazaone = rec.rid LIMIT 1);
INSERT INTO dziecko_rodzic (id_rodzic,id_dziecko) VALUES (idRodzic2,iddziecko2);
END IF;
END LOOP;
END
$do$
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX