Wybierając tylko tabele przestrzenne z bazy danych PostgreSQL?

10

Moja baza danych zawiera zarówno tabele przestrzenne, jak i nieprzestrzenne, ale chcę pobrać z zapytania tylko tabelę przestrzenną.

Wszelkie sugestie dotyczące wyboru tylko tabel przestrzennych. „the_geom” to kolumna geometrii w tabeli przestrzennej.

W przeciwnym razie można wybrać tabele z nazwy kolumny.

Próbowałem z tym kodem select relname from pg_stat_user_tables WHERE schemaname='public'; ale z tego otrzymujemy wszystkie nazwy tabel.

Kishor
źródło

Odpowiedzi:

16

Wszystkie odwołania do tabeli przestrzennej są przechowywane w tabeli metadanych geometry_columns. Więc spróbuj:

select * from geometry_columns

i powinieneś dostać tylko tabele przestrzenne

mapoholic
źródło
Dziękuję bardzo ... Myślę, że przegapiłem prostą rzecz
Kishor
2
Mam inny kod, SELECT table_name FROM information_schema.columns WHERE column_name = 'the_geom'
Kishor,
yip- to długa droga :-)
mapoholic
tak, masz rację.
Kishor,
@kishor, powinieneś dodać swój komentarz jako „odpowiedź”, tak aby ludzie również widzieli go jako opcję, nawet jeśli ustalono, że odpowiedź mapoholic może być preferowaną metodą.
RyanKDalton
2

Krótka droga

select * from geometry_columns

Głębiej

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

Druga opcja powinna działać, nawet jeśli informacje z geometry_columns zostały usunięte. „Wkb_geometry” to domyślna nazwa kolumn danych geometrii, jeśli użyłeś narzędzia ogr2ogr do zasilania bazy danych.

Jorge Arévalo
źródło
2

Kolejny, aby wybrać tylko tabele przestrzenne w bazie danych.

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

Za pomocą tego kodu możemy również uzyskać informacje o tabeli, znając nazwę kolumny.

Kishor
źródło