从命令行使用 psql 时的单引号

Posted

技术标签:

【中文标题】从命令行使用 psql 时的单引号【英文标题】:single quotes when using psql from command line 【发布时间】:2021-02-03 12:16:54 【问题描述】:

我正在尝试从命令行运行这个简单的 psql 命令,但得到的列 ns 不存在。我确定我错过了一些非常愚蠢的东西。

psql -U myuser -p 6432 -h myhost -d mydb-c 'update schema.table set column ='NS' where id <> 123;'

错误:“ns”列不存在

我尝试将 E'NS' 转义为 'NS' 但没有成功..

谢谢

【问题讨论】:

试试双引号-c "update ... 'NS' where ..." 谢谢,它成功了,现在的问题是我是从一个 shell 脚本执行的,所以我不知道如何传递“”。这是我正在运行的:executeSQL $DB "update schema.table set column ='NS' where id 123;" 【参考方案1】:

这确实是一个shell 问题,例如here 已得到回答。

根据您的问题改编:

psql -U myuser -p 6432 -h myhost -d mydb-c 'update schema.table set column ='"'"'NS'"'"' where id <> 123;'

注意:有时,当您将多个级别的参数传递给嵌套的 shell 调用时,使用八进制形式的单引号也很有好处:

echo "\047"
# '

【讨论】:

以上是关于从命令行使用 psql 时的单引号的主要内容,如果未能解决你的问题,请参考以下文章

Shell中的单引号(‘)双引号(”)和反引号(·)

在 psql 命令行上传递数组参数

从命令行运行 PostgreSQL 查询

如何使用 psql 命令行界面在表中显示数据?

如何从 PostgreSQL 退出/注销? [复制]

执行 psql/mysql CLI 命令行后如何获取查询 ID?