选择psql数据库中的所有表格除了那些匹配[pattern]

时间:2015-03-24 03:57:46

标签: postgresql psql

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

我希望能够选择所有 - 参考表(名称更加可变,但它们都不以valid开头),但可以&# 39;弄清楚如何。我尝试了\dt !valid*\dt !~valid*\dt NOT LIKE 'valid%'等各种内容,但这些错误或者找不到匹配项。

任何建议都将不胜感激!

1 个答案:

答案 0 :(得分:2)

根据手册,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%';