В PostgreSQL существует несколько способов преобразования данных JSONB в таблицу с определенными полями. Один из способов - использование функции jsonb_to_recordset
, которая позволяет разбить JSONB объект на строки и затем вставить их в таблицу. Ниже представлен пример такого преобразования:
Предположим, у нас есть следующая таблица json_data
с полем data
типа JSONB, которое содержит информацию в следующем формате:
CREATE TABLE json_data ( id SERIAL PRIMARY KEY, data JSONB );
И данные в таблице выглядят примерно так:
id | data ---|--------------------- 1 | {"name": "John", "age": 30} 2 | {"name": "Alice", "age": 25} 3 | {"name": "Bob", "age": 35}
Теперь мы хотим преобразовать данные из поля data
в структуру таблицы с полями name
и age
. Для этого можно воспользоваться следующим запросом:
INSERT INTO new_table (name, age) SELECT d.value->>'name', (d.value->>'age')::INT FROM json_data CROSS JOIN LATERAL jsonb_to_recordset(data) AS d(name TEXT, age TEXT);
Где new_table
- это таблица, в которую мы хотим вставить преобразованные данные. Этот запрос разбивает JSONB объект на строки и вставляет каждое значение name
и age
в новую таблицу.
Таким образом, вы можете легко преобразовать данные из JSONB в PostgreSQL в таблицу с определенными полями, используя функцию jsonb_to_recordset
.