2014-07-09 53 views
1

我需要在Linux中創建腳本。有這樣的命令:Postgres - 從CLI更新命令

psql -U postgres -d ticketon -c "UPDATE "user" SET "password" = 'test'" 

當我把它放在引號中,就有錯誤。當用引號標出時,也有錯誤。我嘗試了幾乎所有的東西,但仍然沒有成功。有誰知道什麼是正確的語法?

+2

另一個很好的理由,以避免表(或列)其他需要引用名字...... –

+1

不可考,但我想嘗試'的psql -U Postgres的-d ticketon -c「UPDATE \」用戶\ 「SET \」密碼\「='test'」' –

+0

優秀。非常感謝:-D – MakoBuk

回答

2

如何a_horse_with_no_name說。

psql -U postgres -d dbName -c "UPDATE \"user\" SET \"password\" = 'test'" 
0

我最近在做類似的事情。 您想要做的是先執行登錄(psql -U postgres -d ticketon -c),然後通過STDIN管道輸入您希望預製的查詢("UPDATE "user" SET "password" = 'test'")。在bash這將是如下:

echo "UPDATE "user" SET "password" = 'test'" | psql -U postgres -d ticketon -c 

以上可以工作比只使用-c命令一個命令更好,因爲Postgres的不喜歡對付雙引號。

0

無需過度引用如果您使用的SH here document

#!/bin/sh 
psql -U postgres -d ticketon <<XXX 
UPDATE "user" 
SET password = 'test' 
WHERE username = 'James' -- I think a where clause is needed here ... 
    ; 
XXX