2017-12-22 14 views
0

하나의 테이블에서 값을 복사하고 jsonb 필드에서 다른 값을 삽입하는 방법을 이해할 수 있도록 도와주십시오.하나의 테이블에서 값을 복사하여 다른 jsonb 필드에 삽입하십시오

additional_info은 제품 표에 jsonb 필드입니다.

dedication, stories, status 도서 테이블의이 필드는 additional_info 필드에 복사하고 싶습니다.

나는 그렇게했지만, 분명이이 같은

INSERT INTO products (order_id, name, price, type, additional_info) 

SELECT order_id, name, null, 'Book', '{\"dedication\": dedication, \"stories\": stories, \"status\": status }' 

FROM books; 

답변

1

jsonb_build_object을 사용해야합니다. 답변에 대한

INSERT INTO products (order_id, name, price, type, additional_info) 
select order_id, 
     name, 
     null, 
     'Book', 
     jsonb_build_object('dedication', dedication, 'stories', stories, 'status', status) 
from books 
+0

감사 : 그리고 \은 SQL에서 특별한 의미가없는, 리터럴 SQL 문자열 내부 \"에 대한 필요가 없습니다! 내가 슬래시 =) 이 나를 위해 작동하지만이 오류 'PG :: InvalidParameterValue 가져올 필요 이유, 내 루비 스크립트 삽입이 코드 오류 : 인수를 3 null' '힌트가 될 수 없습니다 : 개체 키는 텍스트 여야합니다. ' –

+0

해당 열은 어떤 데이터 유형입니까? –

+0

데이터 유형은 문자열입니다. –

0

뭔가 올바르지 않습니다. 슬래시 "\"를 어떻게 사용하고 있는지 잘 모르겠습니다.

INSERT INTO products (order_id, name, price, type, additional_info) 

SELECT order_id, name, null, 'Book', json_build_object("dedication\", dedication, "stories\", stories, "status\", status) AS additional_info 

FROM books;