2016-04-20 4 views
1

Wir verwenden Redshift, die Postgres 8 verwendet.
Ich muss (2) Tabellen vergleichen, die fast identisch sein werden, aber die andere Tabelle wird zusätzliche Spalten haben, so dass Ich muss den Spaltenunterschied herausfinden.postgresql - erhalten Sie eine Liste der Spalten Unterschied zwischen 2 Tabellen

Beispiel:

CREATE TABLE table1 (
    v_id character varying(255) NOT NULL, 
    v_created timestamp without time zone NOT NULL, 
    abc_102 boolean, 
    abc_103 boolean, 
    abc_104 boolean, 
    def_56 boolean DEFAULT false NOT NULL, 
    def_57 boolean DEFAULT false NOT NULL 
) 

CREATE TABLE table2 (
    v_id character varying(255) NOT NULL, 
    v_created timestamp without time zone NOT NULL, 
    abc_102 boolean, 
    abc_103 boolean, 
    abc_104 boolean, 
    abc_105 boolean, 
    def_56 boolean DEFAULT false NOT NULL, 
    def_57 boolean DEFAULT false NOT NULL, 
    def_58 boolean DEFAULT false NOT NULL, 
) 

Welche Abfrage kann ich das verwenden geben Sie mir eine Liste der Spalten Unterschiede?

Antwort

1

Sie können dies erreichen, indem alle Spaltennamen aus table2 ausgewählt werden, die nicht auch in table1 erscheinen tun:

SELECT column_name 
FROM information_schema.columns 
WHERE table_schema = 'your_schema' AND table_name = 'table2' 
    AND column_name NOT IN 
    (
     SELECT column_name 
     FROM information_schema.columns 
     WHERE table_schema = 'your_schema' AND table_name = 'table1' 
    ) 
+0

Dies funktioniert für mich. Vielen Dank. – noober