Выбор только пространственных таблиц из базы данных PostgreSQL?

10

Моя база данных содержит как пространственные, так и непространственные таблицы, но я хочу извлечь из запроса только пространственную таблицу.

Любые предложения по выбору только пространственных таблиц. 'the_geom' - это столбец геометрии в пространственной таблице.

В противном случае возможно ли выбрать таблицы из названия столбца.

Я пытался с этим кодом select relname from pg_stat_user_tables WHERE schemaname='public'; но из этого мы получаем все имена таблиц.

Кишор
источник

Ответы:

16

Все ссылки на пространственные таблицы хранятся в таблице метаданных geometry_columns. Поэтому постарайтесь:

select * from geometry_columns

и вы должны получить только пространственные таблицы

mapoholic
источник
Большое спасибо ... Я думаю, что пропустил простую вещь
Кишор
2
Я получил другой код, SELECT table_name FROM information_schema.columns WHERE column_name = 'the_geom'
Кишор
Да, это долгий путь :-)
Mapoholic
ты прав.
Кишор
@kishor, вы должны добавить свой комментарий как «ответ», просто чтобы люди тоже рассматривали его как вариант, даже если было установлено, что ответ мафоголика может быть предпочтительным методом.
RyanKDalton
2

Короткий путь

select * from geometry_columns

Более глубокий путь

SELECT table_name FROM information_schema.columns WHERE column_name = 'the_geom' or column_name = 'wkb_geometry'

Второй вариант должен работать, даже если информация о geometry_columns была удалена. «Wkb_geometry» - это имя столбцов геометрических данных по умолчанию, если вы использовали инструмент ogr2ogr для подачи в вашу базу данных.

Хорхе Аревало
источник
2

Еще один, чтобы выбрать только пространственные таблицы в базе данных.

SELECT table_name FROM information_schema.columns WHERE column_name = 'the_geom'`

Используя этот код, мы также можем получить информацию о таблице, зная имя ее столбца.

Кишор
источник