簡體   English   中英

如何僅獲取PostgreSQL中數據庫的表名

[英]How to get only the table names of a database in PostgreSQL

我有幾個bash腳本,用於查詢mysql數據庫並獲取表名,我使用以下命令:

mysql -NBA --user=$DB_user --password=$DB_pass --database=$DB_name -e 'show tables'

使用-NBA參數,我可以過濾結果並得到如下結果:

    categories
    colections
    colors
    files

在帶有psql的postgreSQL中,我正在嘗試實現相同的格式,正在閱讀文檔並使用以下參數:

psql --username=$DB_user -W --host=$HOST --dbname=$DB_name -Atc '\dt'

這是我能得到的最好的

    public|categories|table|user
    public|colections|table|dbuser
    public|colors|table|dbuser
    public|files|table|dbuser

在最壞的情況下,我需要解析它以僅獲取表的名稱,但是如果有人知道實現我想要的方法,我會很高興。

此SQL查詢獲取所需的信息(或其任何變體):

SELECT table_name
FROM   information_schema.tables
WHERE  table_schema = 'public' -- mysql does not have schemas
ORDER  BY 1;

因此,從外殼:

psql --username=$DB_user -W --host=$HOST --dbname=$DB_name -Atc 'SELECT table_name FROM information_schema.tables WHERE table_schema = \'public\' ORDER BY 1'

您可能需要使用quote_ident(table_name)來獲取轉義的表名:

;DELETE FROM users; -- ;DELETE FROM users; --成為";DELETE FROM users; --"

請注意,您只會獲得當前用戶有權訪問的表名。 關於信息模式和系統目錄:

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM