PostgreSQL
 sql >> Base de Dados >  >> RDS >> PostgreSQL

Como comparar dois esquemas no PostgreSQL


Às vezes você pode precisar comparar dois esquemas no PostgreSQL. Você pode usar uma consulta SQL para fazer isso ou usar uma das muitas ferramentas de terceiros que permitem comparar dois esquemas no PostgreSQL. Neste artigo, veremos as duas maneiras de comparar dois esquemas no PostgreSQL.



Como comparar dois esquemas no PostgreSQL


Veremos duas maneiras de comparar dois esquemas no PostgreSQL – usando consultas SQL e usando pgAdmin.



Compare dois esquemas usando SQL


Aqui está a consulta SQL para comparar dois esquemas. Substitua schema1 e schema2 pelos nomes de dois esquemas que você deseja comparar.
select COALESCE(c1.table_name, c2.table_name) as table_name,
       COALESCE(c1.column_name, c2.column_name) as table_column,
       c1.column_name as schema1,
       c2.column_name as schema2
from
    (select table_name,
            column_name
     from information_schema.columns c
     where c.table_schema = 'schema1') c1
full join
         (select table_name,
                 column_name
          from information_schema.columns c
          where c.table_schema = 'schema2') c2
on c1.table_name = c2.table_name and c1.column_name = c2.column_name
where c1.column_name is null
      or c2.column_name is null
order by table_name,
         table_column;

A consulta acima basicamente lista todas as linhas presentes em qualquer esquema com informações sobre sua presença/ausência no outro esquema.
  • table_name – nome da tabela presente no esquema1 ou esquema2
  • coluna_tabela – nome da coluna presente no esquema1 ou esquema2
  • esquema1 – se a coluna existir no esquema1, seu nome será exibido, caso contrário, será nulo.
  • esquema2 – se a coluna existir no esquema2, seu nome será exibido, caso contrário, será nulo.



Compare dois esquemas no pgAdmin


Usaremos o Schema Diff recurso do pgAdmin para comparar esquemas ou bancos de dados ou outros objetos.

A ferramenta Schema diff permite rastrear a diferença entre dois objetos de banco de dados e listar as diferentes instruções SQL para sincronizar bancos de dados.

No entanto, observe que os servidores de origem e destino devem ser da mesma versão do servidor principal.

Aqui estão as etapas para comparar dois esquemas usando a ferramenta Schema Diff.

1. Clique em Diferença de esquema opção, em Ferramentas cardápio.

2. Você verá um formulário onde você precisa selecionar Origem e Destino

3. Selecione as versões do servidor, os servidores de origem e destino e o banco de dados/esquema, dependendo de sua necessidade.

4. Clique em Comparar para comparar dois bancos de dados/esquemas. Você verá uma lista detalhada do resultado da comparação de objetos, seguido pelo resultado da comparação DDL

5. O resultado da comparação de objetos é apresentado como uma árvore, na qual você pode clicar para expandir/recolher.

6. Os resultados da comparação DDL são apresentados em 3 painéis. No painel esquerdo, você encontrará consultas SQL do esquema de origem. No painel do meio, você tem as instruções SQL para o esquema de destino. E no painel direito, você encontrará a diferença entre as instruções SQL de dois esquemas.

7. Você encontrará muitas opções para refinar os resultados da comparação, como Editor de Consultas, Gerador de Scripts e filtros.




O pgAdmin Schema diff é muito mais abrangente do que a comparação de esquema baseado em SQL e é altamente recomendado. Espero que este artigo o ajude a comparar dois esquemas no PostgreSQL.

O Ubiq facilita a visualização de dados e o monitoramento em painéis em tempo real. Experimente o Ubiq gratuitamente.