psql: SELECT *… oprócz jednej kolumny


10

Poszukuję prostego sposobu zaznaczenia wszystkich kolumn oprócz jednej w psql.

Z psqlZnaczy interaktywny wiersz polecenia.

Byłbym zadowolony z narzędzia, które rozwija się *do listy cytowanych nazw kolumn. Następnie mógłbym usunąć kolumnę, aby usunąć ręcznie.

Moje pytanie dotyczy tylko interaktywnego użycia psql. Nie jest to duplikat pytań osób niezadowolonych ze standardu sql i chcących wykonać coś takiego jak „select * -foo”.


3
Przepraszam, nie ma. Możesz wykonać zapytanie information_schemaza pomocą funkcji pl / pgsql, aby dość łatwo wygenerować listę, ale w ten sposób byłyby to dwa zapytania.
Craig Ringer,

2
Większość narzędzi GUI może to zrobić. Ale jeśli chcesz (lub musisz) trzymać się wiersza poleceń, może to pomoże: github.com/dbcli/pgcli
a_horse_with_no_name

@ a_horse_with_no_name Chciałbym zaakceptować twoją „odpowiedź”. Czy możesz napisać odpowiedź i wyjaśnić użycie narzędzia pgcli rozwiązującego pytanie.
guettli

z wyjątkiem której kolumny? ostatni? pierwszy? A może losowy?
BAE

1
@ChengchengPei: nie ma descpolecenia wpsql
a_horse_w_na_nazwa

Odpowiedzi:


4

Aby uzyskać listę kolumn w domyślnej kolejności, bez złej kolumny:

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!

Lub tylko WHERE attrelid = 'mytable'::regclassjeśli ufasz ścieżce wyszukiwania w celu rozwiązania właściwego schematu.

quote_ident() w razie potrzeby dodaje cudzysłowy.

Zadałem to samo pytanie w 2007 r. W sprawie pgsql-general . To był wtedy Postgres 8.2. Słodkie wspomnienia ...

Związane z:


1
To brzmi jak czynność do wykonania, aby dodać polecenie psslash do psql, które wyśle ​​ciąg, który jest listą wszystkich kolumn tabeli, odpowiednio cytowany. Możesz też pominąć wszelkie kolumny, które zostały dołączone jako dodatkowe argumenty do polecenia. Tak hipotetycznie \dq thetable bad_column.
jjanes

@jjanes: Nie jestem pewien, czy może wygenerować wystarczający popyt, aby przekonać głównych programistów do przydzielenia bezpłatnej litery qdo zadania. Może ogólną opcją dla całej rodziny \dpoleceń, aby wyświetlić pustą listę powiązanych nazw? Like \d- tbl(mnemonic: przeciwieństwo \d+, które pokazuje więcej szczegółów). Pozwoliłoby to uzyskać praktycznie dowolną pustą listę obiektów. Tabele w schemacie: \dt- public.*, funkcje zaczynające się od „f_foo”: \df- f_foo*itd. - lub kolumny w tabeli: \d- mytbl. Podobnie do tego, co lsrobi polecenie powłoki ...
Erwin Brandstetter,

Daję ci nagrodę. Ale coś wbudowanego w psql byłoby naprawdę fajną funkcją. Dziękuję Erwin :-)
guettli

0

Myślę, że znalazłem to, czego szukasz, ale sam tego nie przetestowałem.

Istnieje oprogramowanie o nazwie SequelPro, które pozwala wybrać pola z danej tabeli, ale tylko dla MySQL. Proszę przeczytać od dołu gdzieś na środku strony:

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

Istnieje inne oprogramowanie o nazwie PSequel, które działa tylko na komputerach Mac i twierdzi, że jest typu SequelPro zbudowanego dla Postgres:

http://www.psequel.com/

Mam nadzieję że to pomoże.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.