sql >> データベース >  >> RDS >> PostgreSQL

Windowsでshp2pgsql.exeを利用してシェープファイルをPostgreSQL/PostGISデータベースに取り込むPythonスクリプト

    これがうまくいくはずのいくつかの変更です。コマンドのいずれかが失敗した場合に通知を受ける必要がある場合は、さらに変更が必要になることに注意してください。 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. 12.1からOracle12.2に更新した後のテーブル演算子のエラー(ORA-21700)

    2. Pythonから繰り返されるMySQLクエリは、同じデータを返します

    3. WindowsにSQLServerをインストールする方法

    4. WHERE句の内容が異なる場合に最適なMySQLテーブルインデックスを決定する方法は?