psql: SELECT *… bir sütun hariç


10

Ben psql biri hariç tüm sütunları seçmek için basit bir yol arar.

Bununla psqletkileşimli komut satırını kastediyorum.

*Alıntı yapılan sütun isimleri listesine genişleyen bir araçtan memnun olurum . Sonra elle kaldırmak için sütunu kaldırabilirim.

Benim sorum sadece psql interaktif kullanımı hakkında. Bu, sql standardından memnun olmayan ve "select * -foo" gibi bir şeyi yürütmek isteyen kişilerin sorularının bir kopyası değildir.


3
Bir tane yok, üzgünüm. information_schemaBir listeyi kolayca oluşturmak için pl / pgsql işlevi aracılığıyla sorgulayabilirsiniz , ancak bu şekilde iki sorgu olur.
Craig Ringer

2
Çoğu GUI aracı bunu yapabilir. Ancak komut satırına bağlı kalmak (veya zorunda kalmak) istiyorsanız, belki de bu yardımcı olacaktır: github.com/dbcli/pgcli
a_horse_with_no_name

@a_horse_with_no_name "Cevabınızı" kabul etmek istiyorum. Lütfen bir cevap gönderebilir ve soruyu çözen pgcli aracının kullanımını açıklayabilir misiniz?
guettli

hangi sütun hariç? sonuncu? ilki? Yoksa rastgele bir tane mi?
BAE

1
@ChengchengPei: desciçinde komut yokpsql
a_horse_with_no_name

Yanıtlar:


4

Sütunların listesini kötü sütun olmadan varsayılan sırayla almak için:

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!

Ya da sadece doğru şemaya çözüm bulmak için arama yolunaWHERE attrelid = 'mytable'::regclass güveniyorsanız .

quote_ident() gerektiğinde çift tırnak ekler.

Aynı soruyu 2007'de pgsql-general hakkında sordum . O zamanlar Postgres 8.2 idi. Tatlı hatıralar ...

İlişkili:


1
Bir tablo için tüm sütunların listesi olan ve uygun şekilde alıntılanan bir dize yayan bir ters eğik çizgi komutu eklemek için bir yapılacak iş öğesi gibi geliyor. Ve komuta ekstra argümanlar olarak dahil edilen sütunları atlamasını sağlayabilirsiniz. Varsayımsal olarak \dq thetable bad_column.
jjanes

@jjanes: Çekirdek geliştiricileri qgörev için ücretsiz mektubu tahsis etmeye ikna etmek için yeterli talep yaratabileceğinden emin değilim . Belki \dbirleştirilmiş isimlerin çıplak bir listesini göstermek için tüm komut ailesine genel bir seçenek ? Gibi \d- tbl(anımsatıcı: daha fazla ayrıntı \d+gösteren tersi ). Bu, temelde herhangi bir çıplak nesne listesinin alınmasına izin verecektir . Bir şemada Tablolar: : "f_foo" ile başlayan işlevler bir tablo veya sütunlar - vs.: . Kabuk komutunun yaptığı gibi ...\dt- public.*\df- f_foo*\d- mytblls
Erwin Brandstetter

Sana ödül veriyorum. Ancak psql'de yerleşik bir şey gerçekten güzel bir özellik olacaktır. Erwin :-)
guettli

0

Sanırım aradığınızı buldum ama kendim test etmedim.

Belirli bir tablodan alanları seçmenize izin veren SequelPro adlı bir yazılım var, ancak sadece MySQL için. Lütfen aşağıdan sayfanın ortasındaki bir yerden okuyun:

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

PSequel adı verilen ve sadece Mac üzerinde çalışan başka bir yazılım var ve Postgres için üretilmiş SequelPro tipinde olduğunu iddia ediyor:

http://www.psequel.com/

Bu yardımcı olur umarım.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.