Leonardo Chaves escreveu:
Salve comunidade postgres,
estou precisando de uma boa ferramenta para comparar schemas. Em minhas buscas encontrei a ferramenta DB-solo 2.2. É uma ótima ferramenta porém sua licença não gratuita. Alguém conhece alguma ferramenta (free, linux) que faça uma boa análise comparativa entre os banco de teste e produção?


Att,.
Leonardo Chaves de Freitas

QualyConsult
Analista de Bando de Dados  - DBA

vc pode fazer um Scripit em shell

Crie a pasta dump1 e dump2.

Crie o arquivo.sql com o codigo
   COPY (select * from tabela1 order by 1) TO STDOUT WITH DELIMITER '|';
   COPY (select * from tabela2 order by 1) TO STDOUT WITH DELIMITER '|';
   etc....... com as suas tabelas.

   OBS : O order by tem que usar uma coluna que não repete no caso a PK.

O comando split é usado caso o arquivo fique muito grande e bom quebrar o arquivo dump.tmp.*.$$.


#!/bin/sh
CLUSTER=CSEF
DB1=banco_produção
DB2=banco_teste
H1=10.0.0.2
H2=10.0.0.3
U=postgres
echo -n "Comparing the databases..."
nohup /usr/local/pgsql/bin/psql -U $U -h $H1 $DB1 -f arquivo.sql -A >dump.tmp.1.$$ & nohup /usr/local/pgsql/bin/psql -U $U -h $H2 $DB2 -f arquivo.sql -A >dump.tmp.2.$$ &
while [ $(ps -ef | grep -E psql | grep -v grep| wc -l) != 0 ];
do
  sleep 5
done

split -b 300m dump.tmp.1.$$ dump1/
split -b 300m dump.tmp.2.$$ dump2/

diff dump1/ dump2/ >dump.diff

TAMANHOARQ=$(du dump.diff | awk '{print $1}');
if [ $TAMANHOARQ -lt 100 ]; then
        echo -e "\nSuccess! Databases are identical."

        "Aqui voce pode enviar um email"

        #rm dump.diff
else
        /usr/local/bin/sendEmail -f [EMAIL PROTECTED] -t
        echo -e "\nFAILED - see dump.diff."

        "Aqui voce pode enviar um email"
fi
rm -f dump.tmp.?.*
rm dump1/*
rm dump2/*
_______________________________________________
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral

Responder a