\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$
		
				
				
			
			
			
			
		
							postgres bazaOne to bazaTwo
                	                  	    					   Możliwość komentowania postgres bazaOne to bazaTwo została wyłączona