Re: BUG #12320: json parsing with embedded double quotes
От | Aaron Botsis |
---|---|
Тема | Re: BUG #12320: json parsing with embedded double quotes |
Дата | |
Msg-id | 220F46D8-1D35-487F-AFF7-B58A30E4632A@bt-r.com обсуждение исходный текст |
Ответ на | Re: BUG #12320: json parsing with embedded double quotes (Francisco Olarte <folarte@peoplecall.com>) |
Список | 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 по дате отправления: