MySQL - перечислить все свойства JSON в виде отдельных столбцов - PullRequest
0 голосов
/ 31 марта 2020

У нас есть неструктурированные данные, которые хранятся как JSON в MySQL (одна из таблиц вместе со структурированными данными). Мы хотели бы извлечь данные, но мы не уверены, как извлечь данные JSON, так как JSON Данные могут содержать любое свойство (без общих свойств).

Не могли бы вы помочь мне уточнить все свойства, не указывая имена свойств.

1 Ответ

0 голосов
/ 31 марта 2020

SQL не может динамически добавлять дополнительные столбцы к его результирующему набору после того, как запрос начинает выполняться, и он проверяет данные в строках. Столбцы должны быть зафиксированы в списке выбора во время синтаксического анализа запроса SQL, прежде чем запрос начнет выполняться и проверять данные. Таким образом, вы должны указать столбцы в списке выбора запроса. Это означает, что вы должны знать имена всех свойств заранее.

Вы можете сделать запрос для получения всех имен свойств:

SELECT JSON_KEYS(mydata) FROM MyTable;

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

Затем вы можете использовать этот список для формирования второго SQL запроса с одним столбцом в select- список для каждого ключа, который вы отметили на первом шаге.

Альтернативой является забыть о возвращении свойств в отдельных столбцах. Просто верните JSON документы из базы данных как есть. Затем разберите JSON после того, как вы получите его в наборе результатов, и обработайте его в коде приложения таким образом.

Так или иначе, вам нужно написать код приложения, либо перед выполнением запроса, либо после выполнение вашего запроса.

Добро пожаловать в "гибкий" дизайн базы данных! : -)

...