Я работаю над этим Баш скрипт для Dockerfile:Можно ли импортировать данные OSM изнутри psql?
#!/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
я тусклый, чтобы добавить две команды импорта после 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
В моем Dockerfile я поставил это ADD команды: 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**, но i получите сообщение об ошибке, что файл .sql не существует. –
Вероятно, предполагается, что файл .sql находится в другом каталоге. (или существует проблема разрешения или пользователя). Попробуйте указать полное имя пути. Или создайте необходимое вам значение в/tmp /) – joop