#json #amazon-redshift
#json #амазонка-красное смещение #amazon-redshift
Вопрос:
Я пытаюсь извлечь некоторые данные из поля JSON.
[{"id": 10001, "person1": {"name": "Kevin", "role": "junior"},
"person2": {"name": "Scott", "role": "senior"}}]
Я пытаюсь извлечь имя и роль под каждым идентификатором.
Я попробовал ниже, но он вернул пустую запись.
SELECT json_extract_path(column_name::json,'person1','name') FROM table
Комментарии:
1. Содержит ли поле точный текст, который вы показали выше (включая квадратные скобки)? Рассматривали ли вы возможность загрузки этих данных в таблицу в виде обычных столбцов, а не сохранения их в формате JSON? Это было бы намного эффективнее.
Ответ №1:
JSON, который вы показали, является:
- Список (как указано
[]
) - Которое содержит словарь
- Которое содержит словарь
Сначала вам нужно будет извлечь первый элемент списка, а затем использовать предоставленную вами команду.
Попробуйте что-то вроде:
SELECT
json_extract_path(
json_extract_array_element_text(column_name::json, 0),
'person1',
'name'
)
FROM table
Комментарии:
1. Спасибо. Я смог получить необходимую информацию, используя следующее : ` выберите json_extract_path( jsonb_extract_array_element_text(column_name)::json, ‘person1’, ‘name»