【问题标题】:Select all tables in psql database EXCEPT those matching [pattern]选择 psql 数据库中的所有表,除了那些匹配的 [pattern]
【发布时间】:2015-05-27 07:13:11
【问题描述】:

我有一个包含许多表的数据库,这些表用作其他表中有效值的参考。这些引用表都命名为valid[table],所以我可以用\dt valid*在psql中显示它们。

我希望能够选择所有 引用表(名称更多样化,但没有一个以 valid 开头),但不知道如何.我尝试了各种方法,例如\dt !valid*\dt !~valid*\dt NOT LIKE 'valid%',但这些方法要么错误,要么找不到匹配项。

任何建议将不胜感激!

【问题讨论】:

    标签: postgresql psql


    【解决方案1】:

    根据手册,psql 支持these patterns。通常您可以使用正则表达式负前瞻(?!valid)*,但? 不能用于带有psql 的正则表达式,因为它被转换为.。从INFROMATION SCHEMA 进行查询可能更容易:

    SELECT table_name FROM information_schema.tables
      WHERE table_schema NOT IN ('pg_catalog', 'information_schema') --exclude system tables
        AND table_type = 'BASE TABLE' -- only tables
        AND table_name NOT LIKE 'valid%';
    

    【讨论】:

    • 感谢 Simo,效果很好!我不知道你可以访问这样的信息架构,非常酷。
    猜你喜欢
    • 2023-03-25
    • 1970-01-01
    • 1970-01-01
    • 2013-04-10
    • 1970-01-01
    • 1970-01-01
    • 2011-05-14
    • 1970-01-01
    • 2014-06-01
    相关资源
    最近更新 更多