postgresql读json包含字符'在一个字符串中

时间:2017-12-01 11:38:41

标签: json postgresql

尝试使用json_array_elements在postgres数据库中读取这个json OV-fiets(http://fiets.openov.nl/locaties.json)。火车站的某些名称包含角色'。 示例..... "description": "Helmond 't Hout"

我认为我的剧本失败是因为'赫尔蒙德和t之间。 我使用的脚本:

WITH data AS (SELECT 'paste the json from http://fiets.openov.nl/locaties.json'::json AS fc)
SELECT
  row_number() OVER () AS gid,
     feat->'locaties'  AS locaties,
  FROM (
  SELECT json_array_elements(fc->'locaties') AS feat
  FROM data
) AS f;*

++++++++++++++++++++++++++++++

我得到的错误:

*syntax error at or near "Hout"
LINE 3: ...Images": [], "name": "HMH - OV-fiets - Helmond 't Hout", "ex.*

如何更改脚本以避免由于字符'

导致的语法错误

2 个答案:

答案 0 :(得分:0)

这里最简单的解决方法可能是美元报价:

SELECT $dq$paste the json from http://fiets.openov.nl/locaties.json$dq$::json

答案 1 :(得分:0)

在SQL中,单引号需要由doubling them转义,例如:

select 'Arthur''s house';

作为替代方案(在Postgres中),您可以使用dollar quoting来避免更改字符串:

SELECT $data$Arthur's house$data$