bash 中的 psql 非常奇怪的错误

psql in bash very strange error

我在 bash 中遇到 psql 查询问题。

我真的不知道为什么PSQL理解值HUB是一个Column。

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' ;'

ERROR: column "hub" does not exist in great_201704

你读你的单引号就像它们嵌套一样:

-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' ;"