从命令行使用 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 时的单引号的主要内容,如果未能解决你的问题,请参考以下文章