Postgres - 来自CLI的更新命令

时间:2014-07-09 14:19:08

标签: postgresql sql-update command-line-interface

我需要在linux中创建脚本。有如下命令:

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

当我把它用于引号时,有错误。超出引号时,也有错误。我几乎尝试了一切,但仍然没有成功。有谁知道什么是正确的语法?

3 个答案:

答案 0 :(得分:4)

a_horse_with_no_name如何说。

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

答案 1 :(得分: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不喜欢处理双引号。

答案 2 :(得分: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