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


10

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

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

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

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

Ответы:


16

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

select * from geometry_columns

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


Большое спасибо ... Я думаю, что пропустил простую вещь
Кишор

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'`

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

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.