เลือกเฉพาะ Spatial tables จากฐานข้อมูล PostgreSQL หรือไม่


10

ฐานข้อมูลของฉันมีทั้งตาราง Spatial และ Non-Spatial แต่ฉันต้องการดึงเฉพาะ Spatial table จากแบบสอบถาม

ข้อเสนอแนะใด ๆ เพื่อเลือกตารางเชิงพื้นที่เท่านั้น 'the_geom' คือคอลัมน์รูปทรงเรขาคณิตในตารางอวกาศ

มิฉะนั้นเป็นไปได้หรือไม่ที่จะเลือกตารางจากชื่อคอลัมน์

ฉันพยายามที่มีรหัสนี้select relname from pg_stat_user_tables WHERE schemaname='public'; แต่จากนี้เราจะได้รับชื่อตารางทั้งหมด

คำตอบ:


16

การอ้างอิงตารางเชิงพื้นที่ทั้งหมดจะถูกเก็บไว้ในตารางเมทาดาทา geometry_columns ดังนั้นลอง:

select * from geometry_columns

และคุณควรได้รับแค่ตารางอวกาศ


ขอบคุณมาก ... ฉันคิดว่าฉันพลาดเรื่องง่าย ๆ ไปแล้ว
Kishor

2
ฉันได้รับรหัสอื่น SELECT table_name FROM information_schema.columns WHERE column_name = 'the_geom'
Kishor

yip- นั่นคือทางยาวรอบ :-)
mapoholic

ใช่คุณถูกต้อง
Kishor

@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 ถูกลบไปแล้ว 'wkb_geometry' เป็นชื่อเริ่มต้นของคอลัมน์ข้อมูลรูปทรงเรขาคณิตถ้าคุณใช้เครื่องมือ ogr2ogr เพื่อป้อนฐานข้อมูลของคุณ


2

อีกอันหนึ่งเพื่อเลือกเฉพาะตารางเชิงพื้นที่ในฐานข้อมูล ..

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

ใช้รหัสนี้เรายังสามารถดึงข้อมูลตารางโดยรู้ชื่อของคอลัมน์

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.