sql >> Database teknologi >  >> RDS >> PostgreSQL

Sådan sammenlignes to skemaer i PostgreSQL

Nogle gange skal du måske sammenligne to skemaer i PostgreSQL. Du kan bruge en SQL-forespørgsel til at opnå dette, eller du kan bruge et af de mange tredjepartsværktøjer, der giver dig mulighed for at sammenligne to skemaer i PostgreSQL. I denne artikel vil vi se på begge måder at sammenligne to skemaer i PostgreSQL på.


Sådan sammenlignes to skemaer i PostgreSQL

Vi vil se på to måder at sammenligne to skemaer i PostgreSQL – ved at bruge SQL-forespørgsler og ved at bruge pgAdmin.


Sammenlign to skemaer ved hjælp af SQL

Her er SQL-forespørgslen til at sammenligne to skemaer. Erstat skema1 og skema2 med navnene på to skemaer, du vil sammenligne.

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;

Ovenstående forespørgsel lister dybest set alle rækker til stede i begge skemaer med information om dets tilstedeværelse/fravær i det andet skema.

  • tabelnavn – navn på tabel til stede i skema1 eller skema2
  • tabel_kolonne – navn på kolonne til stede i skema1 eller skema2
  • skema1 – hvis kolonnen findes i skema1, vises dens navn, ellers er det null.
  • skema2 – hvis kolonnen findes i skema2, vises dens navn, ellers er det null.


Sammenlign to skemaer i pgAdmin

Vi vil bruge Schema Diff funktion i pgAdmin til at sammenligne skemaer eller databaser eller andre objekter.

Skema diff-værktøj giver dig mulighed for at spore forskellen mellem to databaseobjekter og liste de forskellige SQL-sætninger for at synkronisere databaser.

Bemærk dog, at kilde- og målserveren skal være af samme hovedserverversion.

Her er trinene til at sammenligne to skemaer ved hjælp af Schema Diff-værktøjet.

1. Klik på Schema Diff mulighed under Værktøjer menu.

2. Du vil se en formular, hvor du skal vælge Kilde og Mål

3. Vælg serverversioner, kilde- og målservere og database/skema afhængigt af dit krav.

4. Klik på Sammenlign for at sammenligne to databaser/skemaer. Du vil se en detaljeret liste over objektsammenligningsresultater efterfulgt af DDL-sammenligningsresultat

5. Objektsammenligningsresultatet præsenteres som et træ, som du kan klikke på for at udvide/skjule.

6. DDL-sammenligningsresultater præsenteres i 3 paneler. I venstre panel finder du SQL-forespørgsler til kildeskema. I det midterste panel har du SQL-sætningerne for målskema. Og i det højre panel finder du forskellen mellem SQL-sætninger af to skemaer.

7. Du vil finde mange muligheder for at forfine sammenligningsresultater, såsom forespørgselseditor, scriptgenerator og filtre.


pgAdmin Schema diff er meget mere omfattende end SQL-baseret skemasammenligning og anbefales stærkt. Forhåbentlig vil denne artikel hjælpe dig med at sammenligne to skemaer i PostgreSQL.

Ubiq gør det nemt at visualisere data og overvåge dem i dashboards i realtid. Prøv Ubiq gratis.

  1. MariaDB VERSION() Forklaret

  2. FLOSS UK forårskonference

  3. 4 måder at liste alle visninger i en SQL Server-database

  4. PDO-forbindelsestest