2012-02-08 18 views
0

我試圖在數據庫之外使用查詢。也就是說,沒有登錄數據庫 我想得到結果。我找到了選項(-c)。使用該選項,我們可以執行數據庫外部的查詢:如何在數據庫外部使用斜線命令?

test:~$ psql -U sat -c "select * from test.details"; 

它給出輸出。我想使用該查詢的crontab項。所以,我試圖存儲在一個文件中的輸出:

test:~$ psql -U sat -c "select * from test.details \g sat"; 

產生的錯誤:

ERROR: syntax error at or near "\" 
LINE 1: select * from test.details \g sat 

如何做到這一點?

回答

3

這不是斜槓,而是反斜槓。 反斜槓是PostgreSQL字符串文字中的轉義字符,因此您必須將其加倍才能將實際數據中的單個反斜槓變爲單個反斜槓。 如果你想查詢的結果存放到您必須使用-o命令行選項命令行文件,所以您的查詢就會變成:

psql -o filename -U sathishkumar -c "select * from hospital_management.patient_details"; 
+0

非常感謝你,這是工作.. – sat 2012-02-08 08:51:12

3

沒有這樣的事情作爲「在數據庫之外查詢」或「不登錄數據庫」。

您正試圖將psql客戶端的元命令與SQL命令混合在一起,這是絕對不可能的。反斜槓元命令由psql客戶端解釋,SQL查詢由數據庫服務器解釋。

psql中的大多數元命令實際上被轉換爲(一系列)SQL查詢到數據庫服務器。如果您使用交互模式下的命令選項-E啓動它,您可以讓psql打印它發送給數據庫引擎的命令。嘗試:

psql -E mydb 

然後執行任何反斜槓命令並觀察輸出。對於您的其餘問題,@aleroot已經給出了很好的建議。