PostgreSQL
 sql >> база данни >  >> RDS >> PostgreSQL

Скриптове на Python за поглъщане на шейп файл в база данни PostgreSQL/PostGIS, използвайки shp2pgsql.exe на windows

Ето някои модификации, които трябва да накарат нещата да работят. Имайте предвид, че ще се нуждае от допълнителна модификация, ако трябва да бъдете уведомени, ако някоя от командите е неуспешна. Обърнете внимание, че няма да успее за повече от един шейпфайл, тъй като new_shp_table таблицата вече ще съществува, докато нямате допълнителна логика да преместите или преименувате тази таблица другаде или да я заредите с уникално име.

Също така имайте предвид, че PostgreSQL 8.4 ще достигне края на живота си по-късно тази година, така че може да искате да планирате надстройка до по-нова версия, преди да е станало твърде късно.

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. Изберете редове, които не присъстват в друга таблица

  2. Изберете от SUM() на множество колони и се присъединете към postgreSQL

  3. Използване на jsonb_set() за актуализиране на конкретна стойност на jsonb масив

  4. Как да се справяте с еволюцията на базата данни на Play Framework 2 в производството

  5. Как EDB стана лидер на пазара на Postgres