【问题标题】:psql in bash very strange errorbash中的psql非常奇怪的错误
【发布时间】:2017-05-02 21:48:29
【问题描述】:
我在 bash 中遇到 psql 查询问题。
我真的不知道为什么 PSQL 将 HUB 的值理解为 Column。
psql -q -A -h Some_host
-U 用户 -d datashema -p 1111 -t -f query.txt -c 'SELECT id, text FROM great_201704 WHERE id = 10 and
文本 = 'HUB' ;'
错误:great_201704 中不存在列“hub”
【问题讨论】:
标签:
linux
bash
shell
psql
【解决方案1】:
你读你的单引号就像它们嵌套一样:
-c 'SELECT id, text FROM great_201704 WHERE id = 10 and text = 'HUB' ;'
^---------------------------------1--------------------------------^
^-2-^
Bash 将它们读取为两个单引号字符串,它们之间有一个文字:
-c 'SELECT id, text FROM great_201704 WHERE id = 10 and text = 'HUB' ;'
^------------------------------1----------------------------^
^2-^
这相当于HUB 周围没有单引号,这就是psql 认为它是一个列的原因。
在另一个字符串中嵌入一组引号的最简单方法是只使用两种不同类型的引号:
psql -q -A -h Some_host -U User -d datashema -p 1111 -t -f query.txt \
-c "SELECT id, text FROM great_201704 WHERE id = 10 and text = 'HUB' ;"