2016-02-23 25 views
1

我工作的這個bash腳本的Dockerfile:是否可以從psql中導入OSM數據?

#!/bin/bash 
set -e 

gosu postgres postgres --single -jE <<-EOL 
    CREATE USER "$OSM_USER"; 
EOL 

gosu postgres postgres --single -jE <<-EOL 
    CREATE DATABASE "$OSM_DB"; 
EOL 

gosu postgres postgres --single -jE <<-EOL 
    GRANT ALL ON DATABASE "$OSM_DB" TO "$OSM_USER"; 
EOL 

# Postgis extension cannot be created in single user mode. 
# So we will do it the kludge way by starting the server, 
# updating the DB, then shutting down the server so the 
# rest of the docker-postgres init scripts can finish. 

gosu postgres pg_ctl -w start 
gosu postgres psql "$OSM_DB" <<-EOL 
    CREATE EXTENSION postgis; 
    CREATE EXTENSION hstore; 
    ALTER TABLE geometry_columns OWNER TO "$OSM_USER"; 
    ALTER TABLE spatial_ref_sys OWNER TO "$OSM_USER"; 
EOL 
gosu postgres pg_ctl stop 

i灣ALTER TABLE後添加兩個導入命令:

shp2pgsql -I -s 4326 -W "latin1" post_pl.shp post_pl > post_pl.sql 
psql -h 172.17.0.2 -U postgres -d gis -f post_pl.sql 

osm2pgsql -H 172.17.0.2 -U postgres -d gis --hstore -s -S `./osm_stylesheet ./hessen-latest.osm.pbf` 

我的問題是,它可以工作?我們可以在psql中導入數據嗎?如果是的話,我該怎麼做?

TNX

安德烈Ramnikov

回答

0

您可以只包含到這裏的文檔,使用\i(你可能需要雙倍的反斜線)假設你post_pl.sql是在當前目錄(否則指定完整路徑名)

gosu postgres pg_ctl -w start 
gosu postgres psql "$OSM_DB" <<-EOL 
    CREATE EXTENSION postgis; 
    CREATE EXTENSION hstore; 
    ALTER TABLE geometry_columns OWNER TO "$OSM_USER"; 
    ALTER TABLE spatial_ref_sys OWNER TO "$OSM_USER"; 
    \\connect gis -- Assuming a different DB is needed here ... 
    \\i post_pl.sql 
EOL 
gosu postgres pg_ctl stop 

我假設這裏shp2pgsql母鹿不需要數據庫。 osm2pgsql哪些需要數據庫可以放在EOL之後,就在pg_ctl stop之前。

+0

在我Dockerfile我把這個地址的命令:RUN的mkdir -p /docker-entrypoint-initdb.d ** ADD ./osm_stylesheet /docker-entrypoint-initdb.d/osm_stylesheet ADD ./post_pl.sql /泊塢窗-entrypoint-initdb.d/post_pl.sql ADD ./run.sh /docker-entrypoint-initdb.d/run.sh RUN chmod + x /docker-entrypoint-initdb.d/*.sh**但是我得到.sql文件不存在的錯誤。 –

+0

它可能假定.sql文件位於不同的目錄中。 (或者存在許可或userid問題)請嘗試指定完整的路徑名。或者在/ tmp /中創建所需的東西 – joop

相關問題