Как преобразовать значение в таблицах с MySQL в файл JSON с триггером? - PullRequest
0 голосов
/ 03 января 2019

Я использую phpmyadmin для управления базой данных mysql.У меня есть таблица, которая вызывает NodeJS, и столбец этой таблицы вызывает идентификатор и номер.Я пытался создать файл JSON с этим триггером на mysql:

SELECT id, number FROM NodeJS
INTO OUTFILE '/opt/brackets/www/node_modules/server/prova.json'
FIELDS TERMINATED BY ','
ENCLOSED BY '"'
LINES TERMINATED BY '\n'

, но результат файла prova.json таков:

"1","12"
"3","13.4"
"4","13.4"
"5","13.9"
"6","13.9"
"7","12.9"
"8","12.9"
"9","123"
"10","123"
"11","12345"
"12","12345"
"13","3"
"14","3"
"15","126"
"16","126"
"17","111"
"18","123"
"19","123"
"20","1"
"21","1"
"22","13.4"
"25","11"
"26","11"
"27","12342300"

Поэтому я хотел бы понять, какПреобразуйте его прилично в настоящий файл json, учитывая, что поля таблицы, как я уже говорил, являются id и number.

Благодарю всех за внимание.

Ответы [ 2 ]

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

Хм, это не предназначено для создания файлов JSON. Но, возможно, следующий трюк работает. Используйте json_arrayagg() и json_object() для создания вашего JSON. Затем экспортируйте его в файл, задав для всех разделителей пустые строки (или пробелы, которые JSON игнорирует).

SELECT json_arrayagg(json_object('id', id, 'number', number))
       FROM nodejs
       INTO OUTFILE '/opt/brackets/www/node_modules/server/prova.json'
       FIELDS TERMINATED BY ''
       ENCLOSED BY ''
       LINES TERMINATED BY '';
0 голосов
/ 03 января 2019

Это решает вашу проблему, используя MySql CONACT, GROUP_CONCAT и метод экспорта OUTFILE.

 SELECT GROUP_CONCAT(CONCAT('{ "id": ' ,id, ', "number": "', number, '" } \r')) FROM nodejs
   into @result;
  SET @q = CONCAT('[ ', @result, ' ]');
  SELECT @q INTO OUTFILE 'e:/json_data.json';

Вы можете следовать тому же подходу, чтобы добавить, удалить или изменить любые поля, которые у вас есть, и на выходе будет совершенно правильный файл .json.

** Примечание: у вас могут возникнуть проблемы с разрешениями, если вы попытаетесь записать свой C: \ dirve, поэтому я попытался записать его на диск E: \.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...