в то время как копирование данных в json-файл в postgresql с использованием запроса, запись с одним «\» заменяется на «\\» - PullRequest
0 голосов
/ 31 января 2019

У меня есть команда копирования postgresql, такая как

\copy  (select row_to_json(xyz) from (select employeeJson from employee where empid='1006') xyz) to '/home/users/emp_create_cp_1006.json';

emplyeejson - это столбец jsonb, имеющий такую ​​запись, как

{
"empid": 1006,
"userId":"rirani",
"jobTitleName":"Developer",
"firstName":"Bala",
"lastName":"K",
"preferredFullName":"Bala K",
"employeeCode":"E1",
"region":"CA",
"phoneNumber":"408-1234567",
"emailAddress":"bala.k.k@gmail.com",
"address" : "10\" sarah apartment"
}

, когда файл генерируется, значение адреса становится "10 \"Сара квартира ", который является недействительным JSON.

1 Ответ

0 голосов
/ 31 января 2019

COPY TO не производит дословный текст, он создает текстовый формат, в котором обратный слеш является специальным символом, с обратным люфтом в содержимом, который удваивается, и основное назначение которого заключается в перезагрузке с помощью COPY FROM.

В вашем случае вы можете вызвать SELECT с форматом unaligned для подавления пробела и tuples_only для подавления имен столбцов.Он выдает точное значение столбца без слоя кодирования или декорации.

В psql:

\pset format unaligned
\pset tuples_only
SELECT employeeJson from employee where empid=1006 \g /home/users/emp_create_cp_1006.json

Или из оболочки:

$ psql -At [other options] -c 'SELECT employeeJson from employee where empid=1006' > /home/users/emp_create_cp_1006.json
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...