PostgreSQL
 sql >> Teknologi Basis Data >  >> RDS >> PostgreSQL

Skrip Python untuk mencerna shapefile ke dalam database PostgreSQL/PostGIS menggunakan shp2pgsql.exe di windows

Berikut adalah beberapa modifikasi yang seharusnya membuat sesuatu bekerja. Perhatikan bahwa itu akan membutuhkan modifikasi lebih lanjut jika Anda perlu diberi tahu jika ada perintah yang gagal. Perhatikan bahwa itu akan gagal untuk lebih dari satu shapefile, karena new_shp_table tabel akan ada sampai Anda memiliki logika lebih lanjut untuk memindahkan atau mengganti nama tabel itu di tempat lain, atau memuatnya dengan nama yang unik.

Perhatikan juga bahwa PostgreSQL 8.4 akan mencapai akhir masa pakainya akhir tahun ini, jadi Anda mungkin ingin merencanakan untuk meningkatkan ke rilis yang lebih baru sebelum terlambat.

import os, subprocess

# Choose your PostgreSQL version here
os.environ['PATH'] += r';C:\Program Files (x86)\PostgreSQL\8.4\bin'
# http://www.postgresql.org/docs/current/static/libpq-envars.html
os.environ['PGHOST'] = 'localhost'
os.environ['PGPORT'] = '5432'
os.environ['PGUSER'] = 'someuser'
os.environ['PGPASSWORD'] = 'clever password'
os.environ['PGDATABASE'] = 'geometry_database'

base_dir = r"c:\shape_file_repository"
full_dir = os.walk(base_dir)
shapefile_list = []
for source, dirs, files in full_dir:
    for file_ in files:
        if file_[-3:] == 'shp':
            shapefile_path = os.path.join(base_dir, file_)
            shapefile_list.append(shapefile_path)
for shape_path in shapefile_list:
    cmds = 'shp2pgsql "' + shape_path + '" new_shp_table | psql '
    subprocess.call(cmds, shell=True)



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Perilaku NOT LIKE dengan nilai NULL

  2. hapus karakter non-numerik dalam kolom (karakter bervariasi), postgresql (9.3.5)

  3. Pilih tidak mengembalikan nilai Postgres-11.4

  4. Permintaan hibah untuk tabel di postgres

  5. DROP FUNCTION tanpa mengetahui jumlah/jenis parameter?