2015-08-17 1 views
0

Как переносить целочисленный столбец foo в столбец json array bar?Миграция столбца Postgres в столбец JSON

Это не работает, так как m2 не является допустимым выражением ... JSON

UPDATE mytable SET bar='[m2.foo]' 
FROM (
    SELECT m.foo FROM mytable WHERE bar IS NULL 
) AS m2 
WHERE bar IS NULL 

Перед запросом обновления:

+----+-----+ 
|bar | foo | 
+====+=====+ 
null 1 
null 2 
null 3 
null 4 

После запроса (ожидаемый результат):

+----+-----+ 
|bar | foo | 
+====+=====+ 
[1] 1 
[2] 2 
[3] 3 
[4] 4 

ответ

0

Вот как это сделать с вашей текущей версией:

create table test(bar json, foo int) ; 

insert into test(bar , foo) 
select array_to_json(array[bar]), foo 
from (
select i as bar, i as foo from generate_series(1,10) i 
) m2 ; 

select * from test ; 

результат:

 [1] ; 1 
[2] ;2 
[3] ;3 
[4] ;4 
[5] ;5 
[6] ;6 
[7] ;7 
[8] ;8 
[9] ;9 
[10] ;10 


update test set bar= null 

Теперь ваше заявление обновление должно быть что-то вроде ниже:

update test set bar = array_to_json(array[m2.foo]) 
from (
select foo from test 
) m2 
where bar is null and m2.foo = test.foo; 

select * from test ; 

дает результат, указанный в вашем вопросе.

Смежные вопросы