传递参数给 psql.exe

9
我希望能够从应用程序启动psql.exe。用户可以在磁盘上任意位置找到脚本,应用程序只需将该脚本提供给psql即可。就是这样。
正确的命令行是什么?
我尝试了这个命令但没有成功。
"C:\Program Files\PostgreSQL\9.1\bin\psql.exe" TEST SYSADM -f "C:\Documents and Settings\Administrateur\Mes documents\TD6.0\FETCHING\install.sql"

我尝试了加上引号,不加引号,但都无效,它似乎忽略了参数(在cmd.exe上也试过了)。

C:\Documents and Settings\Administrateur>"C:\Program Files\PostgreSQL\9.1\bin\psql.exe" TEST SYSADM -f "C:\Documents and Settings\Administrateur\Mes documents\TD6.0\FETCHING\install.
sql"
psql: warning: extra command-line argument "-f" ignored
psql: warning: extra command-line argument "C:\Documents and Settings\Administrateur\Mes documents\TD6.0\FETCHING\install.sql" ignored
Password for user SYSADM:

是的,如果脚本与 psql.exe 在同一目录下,并且如果我先 CD 到 psql.exe 安装的位置,那么就不需要引号、绝对路径,它可以正常工作。然而,在我的情况下,我希望该应用程序在任何 Windows 安装上都能工作,也就是说 psql.exe 可能在任何地方,sql 脚本也可能在任何地方。我仍然希望将脚本提供给 psql.exe。


5
如果你仔细查看psql --help的输出,你会注意到所有“开关”参数需在数据库和用户名之前指定。 - user330315
2个回答

7

试试这个:

"C:\Program Files\PostgreSQL\9.1\bin\psql.exe" -f "C:\Documents and Settings\Administrateur\Mes documents\TD6.0\FETCHING\install.sql" TEST SYSADM 

对于 -c 参数也是一样,psql.exe 只是想要它更早些 :) - Edoardo

0
将以下命令保存为批处理文件(install.bat等)。
请注意 'defaultValueHere'。您可以设置默认值,以防用户跳过输入。
SET installScript=defaultValueHere
SET /P server="Enter the install script location [%installScript%]: "
ECHO you typed %installScript%
PAUSE 
"C:\Program Files\PostgreSQL\9.1\bin\psql.exe" TEST SYSADM -f %installScript%

请告知用户从install.bat文件启动安装。另请参阅我的回答,了解如何传递参数到SQL脚本。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接