From your previous question, gerçekten ne yapmaya çalışıyorlar onlar aynı veri dahil olup olmadığını görmek için veritabanları karşılaştırmak olduğunu varsayalım.
As we saw there, pg_dump deterministically davranmaya gitmiyor. Bir dosya diğerinin ters olduğu gerçeği muhtemelen rastlantısaldır.
Burada şema ve veri dahil olmak üzere toplam karşılaştırma yapabileceği bir yoludur.
İlk olarak, şema karşılaştırmak using this method.
İkincisi, tutarlı olacak bir düzen içinde bir dosyaya tüm damping tarafından verileri karşılaştırmak. Sipariş ilk adıyla sıralama tabloları ve ardından birincil anahtar sütunu (ler) tarafından her tablonun içindeki verileri sıralayarak tarafından garanti edilmektedir.
Aşağıdaki sorgu COPY
ifadeleri üretir.
select
'copy (select * from '||r.relname||' order by '||
array_to_string(array_agg(a.attname), ',')||
') to STDOUT;'
from
pg_class r,
pg_constraint c,
pg_attribute a
where
r.oid = c.conrelid
and r.oid = a.attrelid
and a.attnum = ANY(conkey)
and contype = 'p'
and relkind = 'r'
group by
r.relname
order by
r.relname
Bu sorguyu çalıştıran copy (select * from test order by a,b) to STDOUT;
tüm metin dosyasına koy ve her veritabanı için psql'de yoluyla onları çalıştırmak ve ardından çıkış dosyaları karşılaştırmak sizin gibi tabloların bir listesini verecektir. Sen output settings to COPY
a> ile oynamak gerekebilir.