我的问题不是针对 PostgreSQL 9.6,但 PostgreSQL 9.6 是我正在尝试运行的软件,所以我将使用它作为我的示例。我也在 Windows 10 上运行。
编辑: Magoo 给出了一个非常具体的 PostgreSQL 答案。如果其他人可以给出更通用的答案,那么我将更改哪个是该答案的公认答案。
我在批处理文件中运行以下代码:
@echo off
SET/P file=Select file:
@echo on
"%~dp0\psql.exe" -W -h [IP adress] -d [databasename] -U [username] -f [file1]
"%~dp0\osm2pgsql-bin\osm2pgsql.exe" --slim --drop --latlong --keep-coastlines --multi-geometry --hstore -S [file2] --tag-transform-script [file3] -W -U gisuser -H [IP adress] -d [databasename] "%file%"
"%~dp0\psql.exe" -W -h [IP adress] -d [databasename] -U [username] -f [file4]
"%~dp0\psql.exe" -W -h [IP adress] -d [databasename] -U [username] -f [file5]
"%~dp0\psql.exe" -W -h [IP adress] -d [databasename] -U [username] -f [file6]
@echo off
pause
@echo on
(括号内的所有内容都是硬编码值。)
何时psql.exe
并osm2pgsql.exe
开始他们提示输入密码。这本身很好,但是随着它们多次运行,它会迫使用户多次输入密码。osm2pgsql 也是一个需要很长时间的过程,因此用户必须在两次之间等待才能输入密码。
我想要做的是提示用户输入一次密码,然后在 psql.exe 和 osm2pgsql.exe 在提示输入密码时运行时自动输入该密码。
我试过这个没有成功:https ://stackoverflow.com/a/43896549/7398644
出于好奇,上面的代码应该是在 PostgreSQL 数据库中 DROP CASCADE 多个表(file1 中的 SQL 代码),然后从 OpenStreetMap 数据中重新创建这些表,最后在同一个数据库中创建多个视图(SQL 代码在文件 4、5 和 6 中)。