微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

使用节点获取特定Postgres数据库中的所有表?

如何解决使用节点获取特定Postgres数据库中的所有表?

我需要使用node来获取特定Postgres数据库中的所有表。但没有找到任何方法来实现这一目标。有什么办法吗?

例如,假设我有一个名为“ TestDatabase”的数据库,它包含4个表(假设它可以有更少或更多的人,公司,衣服,动物)。 我需要使用node来获取所有名称

我还使用node-postgres('pg')连接数据库

解决方法

这是一个通用解决方案。使用以下查询:

SELECT
   relname
FROM
   pg_class
WHERE
   relkind = 'r';

pg_class是一个系统目录,用于保存有关表(如对象)的信息。因此,需要将relkind限制为'r'。这将包括所有表类型。要进一步限制,请参见下面链接中的relpersistence

https://www.postgresql.org/docs/current/catalog-pg-class.html

,

您也可以使用information_schema。最好的方法不是系统目录中的pg_ *对象,而是标准化的和可移植的。在这里:

select table_schema||'.'||table_name as table_fullname
 from information_schema."tables"
 where table_type = 'BASE TABLE'
  and table_schema not in ('pg_catalog','information_schema');

系统对象已被此表达式过滤

table_schema not in ('pg_catalog','information_schema')

您可以进一步修改它以仅包含所需的架构。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。