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

yip-それは長い道のりです:-)
mapoholic 2012

ええ、あなたは正しいです。
キショー

@kishor、コメントを「回答」として追加する必要があります。それは、麻薬常習者の回答が推奨される方法であることが確立されている場合でも、人々がそれもオプションとして見ることができるようにするためです。
RyanKDalton 2012

2

短い道

select * from geometry_columns

より深い方法

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

2番目のオプションは、geometry_columnsの情報が削除されている場合でも機能するはずです。ogr2ogrツールを使用してデータベースをフィードした場合、「wkb_geometry」はジオメトリデータ列のデフォルト名です。


2

データベース内の空間テーブルのみを選択するもう1つ。

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

このコードを使用して、列名を知ることでテーブル情報を取得することもできます。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.