[pgsql-jp: 33684] Re: SQLでDB内の全テーブル名を取得する方法について

KAWAJI Toshiyuki tkawj @ yahoo.co.jp
2004年 7月 15日 (木) 17:34:46 JST


こんにちは。河治@山梨です。私のわかるところだけ。

Satou Hideki wrote:
> こんにちは佐藤@日立建機です。
> 現在RedHat 7.2 上で動作しているPostgresql 7.4を操作するのに、
> おがわさん作のPSqlEditというWindows用ツールを使用しています。
> http://www.hi-ho.ne.jp/a_ogawa/
...
> もし「こういうやり方の方が良いよ」というやり方がありましたら
> ご教授いただければ幸いです。また、何故コメントが入るとテーブル
> 名が抽出されるのかについても参考までに教えて頂ければ嬉しいです。

こんなときには、psqlコマンドに-Eオプションをつけて実行してみるのが
ハッピーになれると思います。内部で実行されているSQL文が見えます。
以下は私の環境で実行した結果です。

$ psql -E dbname
Welcome to psql 7.4.2, the PostgreSQL interactive terminal.

Type: \copyright for distribution terms
\h for help with SQL commands
\? for help on internal slash commands
\g or terminate with semicolon to execute query
\q to quit

dbname=# \dt
********* QUERY **********
SELECT n.nspname as "Schema",
c.relname as "Name",
CASE c.relkind WHEN 'r' THEN 'table' WHEN 'v' THEN 'view' WHEN 'i' THEN
'index' WHEN 'S' THEN 'sequence' WHEN 's' THEN 'special' END as "Type",
u.usename as "Owner"
FROM pg_catalog.pg_class c
LEFT JOIN pg_catalog.pg_user u ON u.usesysid = c.relowner
LEFT JOIN pg_catalog.pg_namespace n ON n.oid = c.relnamespace
WHERE c.relkind IN ('r','')
AND n.nspname NOT IN ('pg_catalog', 'pg_toast')
AND pg_catalog.pg_table_is_visible(c.oid)
ORDER BY 1,2;
**************************

List of relations
Schema | Name | Type | Owner
--------+-------------------+-------+--------
public | table_name | table | zzzz
(xx rows)




pgsql-jp メーリングリストの案内