从PostgreSQL数据库中仅选择空间表?


10

我的数据库同时包含空间表和非空间表,但是我只想从查询中检索空间表。

任何仅选择空间表的建议。“ the_geom”是空间表中的几何列。

否则,可以从其列名中选择表。

我尝试使用此代码select relname from pg_stat_user_tables WHERE schemaname='public';但是从中我们得到所有的表名。

Answers:


16

所有空间表引用都保存在geometry_columns元数据表中。因此,请尝试:

select * from geometry_columns

你应该只得到空间表


非常感谢你...我想我错过了一件简单的事情
Kishor 2012年

2
我得到了另一个代码, SELECT table_name FROM information_schema.columns WHERE column_name = 'the_geom'
Kishor 2012年

yip-这是很长的路要走:-)
mapoholic 2012年

是的,你是对的。
Kishor 2012年

@kishor,您应该将注释添加为“答案”,以便人们也将其视为一种选择,即使已确定mapoholic的答案可能是首选方法。
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的信息,第二个选项也应该起作用。如果您使用ogr2​​ogr工具提供数据库,则“ wkb_geometry”是几何数据列的默认名称。


2

另一个只选择数据库中的空间表的表。

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

使用此代码,我们还可以通过知道表的列名来检索表信息。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.