如何查PostgreSQL 數據庫中所有的表


[作者:技術者高健@博客園  mail: luckyjackgao@gmail.com ]

這個也是從 oid2name 中扒出來的:

[postgres@localhost bin]$ ./oid2name -d postgres
From database "postgres":
now: 
 SELECT pg_catalog.pg_relation_filenode(c.oid) as "Filenode", relname as "Table Name"  FROM pg_class c  LEFT JOIN pg_catalog.pg_namespace n ON n.oid = c.relnamespace   LEFT JOIN pg_catalog.pg_database d ON d.datname = pg_catalog.current_database(),pg_catalog.pg_tablespace t WHERE relkind IN ('r') AND   n.nspname NOT IN ('pg_catalog', 'information_schema') AND n.nspname !~ '^pg_toast' AND t.oid = CASE                     WHEN reltablespace <> 0 THEN reltablespace     ELSE dattablespace               END ORDER BY relname 
  Filenode  Table Name
----------------------
     24608      gaotab
     24604     testtab
[postgres@localhost bin]$ 

 執行結果就是這樣,這里沒有用我給出的  postgres 數據庫名 ,而是用了 pg_catalog.current_database()

我把格式整理一下,並且把數據庫名換成我想要的 ’postgres‘,當然,如果有其他數據庫,換其他的名字就可以了。

 SELECT         
    pg_catalog.pg_relation_filenode(c.oid) as "Filenode",
    relname as "Table Name"  
    
FROM     
    pg_class c  
    LEFT JOIN pg_catalog.pg_namespace n ON n.oid = c.relnamespace  
    LEFT JOIN pg_catalog.pg_database d ON d.datname = 'postgres',     
    pg_catalog.pg_tablespace t 
WHERE     
    relkind IN ('r') 
    AND n.nspname NOT IN ('pg_catalog', 'information_schema')
    AND n.nspname !~ '^pg_toast'
    AND t.oid = CASE  WHEN reltablespace <> 0 THEN reltablespace   ELSE dattablespace   END 
    
ORDER BY    
     relname 

其實 t 是沒有必要的,還可以再簡化:

SELECT         
    pg_catalog.pg_relation_filenode(c.oid) as "Filenode",
    relname as "Table Name"  
    
FROM     
    pg_class c  
    LEFT JOIN pg_catalog.pg_namespace n ON n.oid = c.relnamespace  
    LEFT JOIN pg_catalog.pg_database d ON d.datname = 'postgres'   
     
WHERE     
    relkind IN ('r') 
    AND n.nspname NOT IN ('pg_catalog', 'information_schema')
    AND n.nspname !~ '^pg_toast'
    
ORDER BY    
     relname

 

 [作者:技術者高健@博客園  mail: luckyjackgao@gmail.com ]


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM