2017-01-26 1 views
1

私は移行を作成して、varchar []からJSONに列の種類を変更しようとしています。私は、次の形式PostgresはVarchar []をJSONに変換します

["US", "UK", "GER"] -> { "US": [], "UK": [], "GER": []} 

既存の表でJSONsを持って達成したいと思います:

CREATE TABLE countries (id SERIAL PRIMARY KEY NOT NULL, destinations VARCHAR [] NOT NULL) 

INSERT INTO countries(destinations) VALUES('{"US","UK"}'); 
INSERT INTO countries(destinations) VALUES('{"GER","UA"}'); 

答えて

0

あなたは目的地をネスト解除し、json_object_agg()のキーとしての要素を使用する必要があります。空のjson配列として'[]'::jsonを使用してください。

select id, json_object_agg(elem, '[]'::json) 
from countries, 
lateral unnest(destinations) elem 
group by id; 

id |  json_object_agg  
----+--------------------------- 
    1 | { "US" : [], "UK" : [] } 
    2 | { "GER" : [], "UA" : [] } 
(2 rows)  
関連する問題