在安裝我的應用程序期間,我想創建一個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