Вставить массив объектов JSONB из одной таблицы в виде нескольких строк во второй таблице

однострочное решение

import os
os.system("wc -l  filename")  

мой фрагмент

os.system ('wc -l * .txt')

0 bar.txt
1000 command.txt
3 test_file.txt
1003 total
-1
задан Brylie Christopher Oxley 18 January 2019 в 15:43
поделиться

1 ответ

Используйте unnest() в боковом соединении:

with my_data(json_column) as (
values (
    array['{"a":1,"b":2,"c":"bar"}','{"a":2,"b":3,"c":"baz"}']::jsonb[])
)
select 
    value->>'a' as a, 
    value->>'b' as b, 
    value->>'c' as c
from my_data
cross join unnest(json_column) as value

 a | b |  c  
---+---+-----
 1 | 2 | bar
 2 | 3 | baz
(2 rows)

Вам могут потребоваться некоторые приведения или преобразования, например:

select 
    (value->>'a')::int as a, 
    (value->>'b')::int as b, 
    (value->>'c')::text as c
from my_data
cross join unnest(json_column) as value

Боковое соединение означает, что функция unnest() будет выполняется для каждой строки из основной таблицы. Функция возвращает элементы массива как value.

0
ответ дан klin 18 January 2019 в 15:43
поделиться
Другие вопросы по тегам:

Похожие вопросы: