psql:SELECT *…1つの列を除く


10

私は、psqlで1つを除くすべての列を選択する簡単な方法を検索します。

psql私は対話型のコマンドラインを意味します。

*引用符で囲まれた列名のリストに拡張できるツールがあれば幸いです。次に、カラムを取り外して手で取り外すことができます。

私の質問は、psqlのインタラクティブな使用法についてです。これは、SQL標準に不満があり、「select * -foo」のようなものを実行したいという人々の質問の複製ではありません。


3
ありません。information_schemapl / pgsql関数を介してクエリを実行すると、リストをかなり簡単に生成できますが、この方法では2つのクエリになります。
クレイグリンガー、

2
ほとんどのGUIツールはそれを行うことができます。しかし、コマンドラインを使い続ける
a_horse_with_no_name

@a_horse_with_no_name「答え」を受け入れたい。回答を投稿して、質問を解決するpgcliツールの使用方法を説明してください。
guettli 2015

どの列を除いて?最後の?最初の1つ?それともランダムですか?
BAE

1
@ChengchengPei:descコマンドはありませんpsql
a_horse_with_no_name

回答:


4

不良列なしで、列のリストをデフォルトの順序で取得するには:

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!

または、正しいスキーマに解決するためWHERE attrelid = 'mytable'::regclass検索パスを信頼している場合。

quote_ident() 必要に応じて二重引用符を追加します。

私は尋ねたpgsqlの-一般的に2007年に同じ質問を。当時はPostgres 8.2でした。甘い思い出 ...

関連:


1
テーブルのすべての列のリストである文字列を適切に引用符で出力するpsqlにバックスラッシュコマンドを追加するのは、やるべきことのように聞こえます。また、コマンドの追加の引数として含まれている列を省略することもできます。だから仮説\dq thetable bad_columnです。
jjanes

@jjanes:コア開発者qがタスクにフリーレターを割り当てるように説得するのに十分な需要を生み出すことができるかどうかはわかりません。たぶん、\d連結された名前のリストを表示するためのコマンドファミリ全体に対する一般的なオプションでしょうか。似ています\d- tbl(ニーモニック:より詳細\d+を示すの反対)。これは基本的に取得することが可能になる任意のオブジェクトの裸のリストを。スキーマ内のテーブル:、「f_foo」で始まる関数:など-またはテーブル内の列:。シェルコマンドの動作に似ています...\dt- public.*\df- f_foo*\d- mytblls
Erwin Brandstetter

賞金を差し上げます。しかし、psqlに組み込まれているものは本当に素晴らしい機能です。アーウィンありがとう:-)
guettli

0

私はあなたが探しているものを見つけたと思いますが、私自身はそれをテストしていません。

特定のテーブルからフィールドを選択できるようにするSequelProと呼ばれるソフトウェアがありますが、これはMySQL専用です。ページ中央のどこかから下から読んでください:

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

Macでのみ実行されるPSequelと呼ばれる別のソフトウェアがあり、Postgres用にビルドされたSequelProタイプであると主張しています。

http://www.psequel.com/

お役に立てれば。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.