我正在尝试通过exiftool
将psql
生成的JSON插入到postgresql中,这似乎是有效的。似乎某种方式,使用转义的单引号和转义的双引号无法正常工作。我无法弄清楚如何正确逃脱json。似乎psql没有正确处理单引号转义,因为它启动了“输出到psql而不是查询。”
鉴于此表
create table test (exif jsonb);
这些工作:
test=> insert into test values ('{"a": 1, "b": "2"}');
INSERT 0 1
test=> insert into test values ('{"a": 1, "b": "2\""}');
INSERT 0 1
test=> select * from test;
exif
----------------------
{"a": 1, "b": "2"}
{"a": 1, "b": "2\""}
但这些不是
test=> insert into test values ('{"a": 1, "b": "1\' 2\""}');
Invalid command \""}');. Try \? for help.
test=> select '{"a": 1, "b": "1' 2\""}';
Invalid command \""}';. Try \? for help.
test=> select E'{"a": 1, "b": "1' 2\""}';
Invalid command \""}';. Try \? for help.
test=> select '{"a": 1, "b": "1\' 2\""}';
Invalid command \""}';. Try \? for help.
有什么建议吗?
答案 0 :(得分:4)
在用于转义单引号的数据库命令中,您需要将其加倍:
test=> insert into test values ('{"a": 1, "b": "1'' 2\""}');
答案 1 :(得分:3)
这是如何正确地逃避单引号:
test=> select '{"a": 1, "b": "1'' 2\""}';