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.

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


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.


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.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.