在安装我的应用程序期间,我想创建一个PostgreSQL数据库以及一些表和函数。如何在没有用户输入/密码的情况下从命令行执行PostgreSQL脚本文件
为此,我使用PostgreSQL附带的PSQL.EXE。我有2个脚本。第一个创建数据库和相应的用户有权执行该数据库上的脚本。我想以这个刚刚创建的用户身份执行第二个脚本。不幸的是,我找不到一种方法来将该用户的密码作为命令行参数传递。省略密码会导致执行停止并提示用户输入密码,我希望避免这种情况 - 因为这是在安装应用程序期间执行的。
是否有任何方式将密码作为参数传递,或者是否有任何其他命令行工具可以使用?
为了进一步说明环境。我使用WiX 3.5安装程序作为“MSI-Builder”。
在Windows上使用WiX安装我的应用程序期间,如何能够提供.pgpass文件?据我了解链接的文档,该文件驻留在%APPDATA%\ postgresql \ pgpass.conf并且将只有一个文件,我将不得不更改为添加已通过第一个脚本创建的用户。我希望这样做有一个很好的方法。 – derSteve
@derSteve正如链接文档所说,您可以将pgpass文件放在任何地方,并使用环境变量PGPASSFILE告诉psql(真正的libpq)在哪里找到它。在unix上,pgpass文件不能是组或世界可访问的。在Windows上,postgres lib会假设你把它放在一个安全的地方,但不会检查或抱怨(所以要聪明并控制文件的权限)。 – dbenhur