it-swarm.com.de

psql: SELECT * ... außer einer Spalte

Ich suche nach einer einfachen Möglichkeit, alle Spalten außer einer in psql auszuwählen.

Mit psql meine ich die interaktive Befehlszeile.

Ich würde mich über ein Tool freuen, das auf * zu einer Liste von Spaltennamen in Anführungszeichen. Dann könnte ich die Säule entfernen, um sie von Hand zu entfernen.

Meine Frage betrifft nur die interaktive Verwendung von psql. Es ist kein Duplikat von Fragen von Personen, die mit dem SQL-Standard unzufrieden sind und etwas wie "select * -foo" ausführen möchten.

10
guettli

So erhalten Sie die Liste der Spalten in der Standardreihenfolge ohne die fehlerhafte Spalte:

SELECT string_agg(quote_ident(attname), ', ' ORDER BY attnum)
FROM   pg_attribute
WHERE  attrelid = 'myschema.mytable'::regclass
AND    NOT attisdropped  -- no dropped (dead) columns
AND    attnum > 0        -- no system columns
AND    attname <> 'bad_column'  -- case sensitive!

Oder einfach WHERE attrelid = 'mytable'::regclass, Wenn Sie darauf vertrauen, dass der Suchpfad in das richtige Schema aufgelöst wird.

quote_ident() fügt bei Bedarf doppelte Anführungszeichen hinzu.

Ich habe die gleiche Frage 2007 auf pgsql-general gestellt. Es war damals Postgres 8.2. Süße Erinnerungen ...

Verbunden:

4

Ich glaube, ich habe gefunden, wonach Sie suchen, aber ich habe es nicht selbst getestet.

Es gibt eine Software namens SequelPro, mit der Sie die Felder aus einer bestimmten Tabelle auswählen können, die jedoch nur für MySQL gilt. Bitte lesen Sie von unten irgendwo in der Mitte der Seite:

http://www.sequelpro.com/docs/Working_with_Query_Favorites

Es gibt eine andere Software namens PSequel, die nur auf Mac läuft und behauptet, sie sei vom Typ SequelPro, der für Postgres entwickelt wurde:

http://www.psequel.com/

Hoffe das hilft.

0
Unbound