Как я могу перечислить таблицы, но не представления из базы данных Postgres, используя R? - PullRequest
3 голосов
/ 02 марта 2020

В ?DBI::dbListTables мы можем прочитать:

Это должно включать в себя представления и временные объекты

И это действительно так.

Как я могу хотя видишь только таблицы, исключая представления?

Я использую драйвер RPostgres::Postgres(), если это имеет значение.

1 Ответ

1 голос
/ 16 марта 2020

Предлагаю в системный каталог посмотреть pg_tables для таблиц:

dbGetQuery(con, "SELECT * FROM pg_tables")

Руководство:

представление pg_tables обеспечивает доступ к полезной информации о каждой таблице в базе данных.

Не содержит представления, материализованные представления или временные таблицы, только обычные таблицы (включая UNLOGGED таблицы). См .:

Возможно, вы захотите исключить системные таблицы и получить только схемы и таблицы имя:

dbGetQuery(con, "SELECT schemaname, tablename FROM pg_catalog.pg_tables WHERE schemaname !~ '^pg_' AND schemaname <> 'information_schema'")

Я добавил явную квалификацию схемы для таблицы каталога: pg_catalog.pg_tables. Как правило, не обязательно, но для защиты от неправильной настройки search_path. См.

pg_views для представлений - если вам это необходимо:

dbGetQuery(con, "SELECT * FROM pg_views")

Представление pg_views предоставляет доступ к полезной информации о каждом представлении в базе данных.

...