#node.js #postgresql #node-postgres #postgresql-12
#node.js #postgresql #узел-postgres #postgresql-12
Вопрос:
Мне нужно получить все таблицы в конкретной базе данных Postgres с помощью node. Но не найти никакого способа добиться этого. Есть ли какой-нибудь способ получить это?
Например, предположим, что у меня есть база данных с именем ‘TestDatabase’, она содержит 4 таблицы (просто предположим, что в ней может быть меньше или больше) Человек, компания, одежда, животное. Мне нужно получить имя всех из них с помощью node.
Я также использую node-postgres (‘pg’) для подключения к базе данных.
Ответ №1:
В качестве альтернативы вы можете использовать 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')
Вы можете дополнительно изменить его, чтобы включать только те схемы, которые вам нужны.
Ответ №2:
Это общее решение. Используйте запрос ниже:
SELECT
relname
FROM
pg_class
WHERE
relkind = 'r';
pg_class
это системный каталог, который содержит информацию о табличных объектах. Следовательно, необходимо ограничить relkind
‘r’. Это будет включать все типы таблиц. Для дальнейшего ограничения см. relpersistence
Ссылку ниже.
https://www.postgresql.org/docs/current/catalog-pg-class.html
Комментарии:
1. Я бы изменил ваш вопрос, указав, что, поскольку теперь он гласит: «Мне нужно получить все таблицы в определенной базе данных Postgres …». Для того, что вы хотите, запустите запрос в @Stefanov.sm ответьте ниже как пользователь, от имени которого вы создали таблицы. Запросы ‘information_schema` будут показывать вам только таблицы, которые создал или имеет права пользователь, выполняющий запрос.
2. Я не знаю много выше Postgres, я получаю слишком много информации, выполняя это… например, pg_statctics, pg_types extra . Мне нужны только таблицы, которые я создал.