Postgresql

列出指定表的所有列

  • May 23, 2021

我正在數據庫中尋找我不知道的精確資訊。數據庫在單獨的機器上,但我可以登錄到它,並psql以管理員權限啟動命令行。

這是第三方產品,他們回答問題的速度很慢。我知道數據在那個數據庫中,所以我想做一些逆向工程。

給定一個表名,是否可以獲得該表中列名的列表?

例如,在 SQL Server 中,可以將表轉儲到可重用的CREATE語句中,該語句以文本形式列出組成表的所有列。

除了\d+ <table_name>您已經找到的命令行之外,您還可以使用Information Schema來查找列數據,使用information_schema.columns

SELECT *
 FROM information_schema.columns
WHERE table_schema = 'your_schema'
  AND table_name   = 'your_table'
    ;

注意:根據上面的範例,請確保將值括在引號內。

作為其他答案的補充,即使是不返回任何行的 SELECT 語句也會向您和應用程式碼公開列名。

select *
from table_name
where false;

我打算讓幾乎所有 DBMS 的幾乎所有客戶端軟體都可以執行此操作。(幾乎?是的,有些不支持像這樣的子句where false。相反,它們需要像這樣的表達式where 1 = 0。)

權限可能會與這些方法中的任何一種一起發揮作用。

引用自:https://dba.stackexchange.com/questions/22362