sql >> Database >  >> RDS >> PostgreSQL

Python-scripts om een ​​shapefile op te nemen in een PostgreSQL/PostGIS-database met shp2pgsql.exe op Windows

Hier zijn enkele wijzigingen die het ding moeten laten werken. Houd er rekening mee dat het verder moet worden gewijzigd als u op de hoogte moet worden gesteld als een van de opdrachten mislukt. Merk op dat het zal mislukken voor meer dan één shapefile, aangezien een new_shp_table tabel zal al bestaan ​​totdat je meer logica hebt om die tabel ergens anders te verplaatsen of te hernoemen, of om hem te laden met een unieke naam.

Houd er ook rekening mee dat PostgreSQL 8.4 later dit jaar aan het einde van zijn levensduur komt, dus misschien wilt u plannen om te upgraden naar een recentere release voordat het te laat is.

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. Hoe eerst op nummer te sorteren met Oracle SQL-query?

  2. Selecteer alle records die niet aan bepaalde voorwaarden voldoen in een samengevoegde tabel

  3. Hoe om te gaan met fouten in in SQL Server geneste transacties

  4. Prestaties bij gebruik van batchmodus van Qt / MySQL