psql中的bash非常奇怪的错误

时间:2017-05-02 21:48:30

标签: linux bash shell psql

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

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

  

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   text =' HUB' ;'

     

错误:专栏" hub"在great_201704中不存在

1 个答案:

答案 0 :(得分:3)

您读取的单引号就好像它们嵌套一样:

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