Re: BUG #12320: json parsing with embedded double quotes - Mailing list pgsql-bugs

From Aaron Botsis
Subject Re: BUG #12320: json parsing with embedded double quotes
Date
Msg-id 220F46D8-1D35-487F-AFF7-B58A30E4632A@bt-r.com
Whole thread Raw
In response to Re: BUG #12320: json parsing with embedded double quotes  (Francisco Olarte <folarte@peoplecall.com>)
List pgsql-bugs
Hi Francisco, I=E2=80=99m aware, but still consider this to be a bug, or =
at least a great opportunity for an enhancement. :)=20

This had bitten me for the third time while trying to import some json =
data. It=E2=80=99d be great to bypass the copy escaping (and possibly =
other meta characters) when the column type is json or jsonb. I=E2=80=99d =
be happy to try and write it and submit a patch if folks believe this is =
an acceptable way to go=E2=80=A6 That said, I should probably read what =
the process is for this kind of thing :)

Aaron


> On Dec 23, 2014, at 1:17 PM, Francisco Olarte <folarte@peoplecall.com> =
wrote:
>=20
> Hi Aaron:
> ....=20
> =
user:\"root\""}}}}},"from":0,"size":20,"timeout":10000,"sort":{"timestamp"=
:{"order":"
> .....
>=20
> Copy from does it's own round of backslash scaping, if you look at=20
>=20
> http://www.postgresql.org/docs/9.4/static/sql-copy.html =
<http://www.postgresql.org/docs/9.4/static/sql-copy.html>
>=20
> The third paragraph under File formats / text format reads:
> Backslash characters (\) can be used in the COPY data to quote data =
characters that might otherwise be taken as row or column delimiters. In =
particular, the following characters must be preceded by a backslash if =
they appear as part of a column value: backslash itself, newline, =
carriage return, and the current delimiter character.
>=20
> As you want the backslash as part of the data you need to double it in =
the file, otherwise you'll fall into the later case:
>=20
> .....Any other backslashed character that is not mentioned in the =
above table will be taken to represent itself
>=20
> And the backslash will get eaten and the json parser will fail. It's =
the same problem that you get when you try to put windows paths or perl =
type regular expresions inside doube quoted =
C/Java/perl/shell/and_many_more Strings.
>=20
> If your table is always a single column and you cannot edit the file, =
you can always try to change the scape character.
>=20
> Regards.
>     Francisco Olarte.
>=20

pgsql-bugs by date:

Previous
From: "Inoue, Hiroshi"
Date:
Subject: Re: BUG #12328: can't install the postgresql
Next
From: Noah Misch
Date:
Subject: Re: BUG #11617: issue with dump/restore involving view with hstore data type embedded in where condition