假设PostgreSQL 10数据库中的一个表称为“度量”,并且(其中包括)一列名为“名称”的文本类型。
我想列出所有具有特定名称的记录,因此使用sql语句:
SELECT * FROM public."Measurement" WHERE "Measurement"."Name" = 'nazwa1';
在pgAdmin SQL编辑器中工作正常。
我想问一下服务器,但psql在Ubuntu的命令行中工作,就像这样:
psql --host 127.0.0.1 --dbname BazaDanych --username postgres --port 5432 --echo-all --no-align --command 'SELECT * FROM public."Measurement" WHERE "Measurement"."Name" = 'nazwa1';' --log-file /home/user/wynik.log -o /home/user/dane.csv -P fieldsep=',' -P footer='off'
由于该语句的单引号不能被外壳识别,并且导致报告“列不存在”的问题,因此它不起作用,如下所示:
public."Measurement" WHERE "Measurement"."Name" = nazwa1
“ nazwa1”字符串不会解释为要与记录进行比较的值,而是会解释为列名。
我尝试了许多方法,例如:\',将单引号和许多其他双引号加倍,但是没有成功的结果。
如何解决此问题?有人可以纠正我的命令吗?
答案 0 :(得分:0)
幸运的是,我找到了!
需要两个步骤:
因此,以下代码可以正常工作:
psql --host 127.0.0.1 --dbname BazaDanych --username postgres --port 5432 --echo-all --no-align --command "SELECT * FROM public.\"Measurement\" WHERE \"Measurement\".\"Name\" = 'nazwa1';" --log-file /home/user/wynik.log -o /home/user/dane.csv -P fieldsep=',' -P footer='off'
这可能对某人有所帮助。如果不是,管理员,请删除我的帖子。