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.