sql >> Databáze >  >> RDS >> PostgreSQL

Skripty Python pro vložení souboru shapefile do databáze PostgreSQL/PostGIS pomocí shp2pgsql.exe v systému Windows

Zde jsou některé úpravy, které by měly zajistit, aby to fungovalo. Všimněte si, že by potřeboval další úpravu, pokud potřebujete být upozorněni, pokud některý z příkazů selže. Všimněte si, že selže pro více než jeden soubor shapefile, protože new_shp_table tabulka již bude existovat, dokud nebudete mít další logiku pro přesun nebo přejmenování této tabulky jinam nebo pro její načtení s jedinečným názvem.

Také si uvědomte, že PostgreSQL 8.4 dosáhne konce své životnosti koncem tohoto roku, takže možná budete chtít naplánovat upgrade na novější verzi, než bude příliš pozdě.

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. Správná manipulace s časovým pásmem pomocí TYPO3 a Fluid

  2. MySQLNumberTypeMapping' nepodporuje převody hodnot

  3. mysql počet slov v syntaxi SQL

  4. Jak získat oznámení databáze do aplikace C++