반응형
이전 블로그에서 가져온 글입니다. (2020.9.30)
설마 쿼리 작업하면서 json을 다루게 될줄은 몰랐다 ㄴㅇㄱ
그래도 PostgreSQL에서 지원해줘서 망정이지 하마터면 그냥 노가다식으로 데이터를 입력하고 있을 뻔했다.
1. 테이블 생성
코드
create table pgsql_json(
id serial not null primary key,
json_data json,
first_name varchar(50),
last_name varchar(50),
email varchar(50),
gender varchar(50)
)
설명
- json_data라는 컬럼에 데이터 타입을 json으로 지정하면 유효한 json값을 그대로 넣을 수 있다.
2. 데이터 삽입
코드
insert into pgsql_json (json_data)
values ('{"id":1,"first_name":"Huntley","last_name":"Record","email":"hrecord0@hc360.com","gender":"Male"}'),
('{"id":2,"first_name":"Frazier","last_name":"Dunnan","email":"fdunnan1@feedburner.com","gender":"Male"}'),
('{"id":3,"first_name":"Klemens","last_name":"Oran","email":"koran2@reddit.com","gender":"Male"}')
결과
설명
- ...이랄게 사실 없고 그냥 유효한 json타입이면 json 타입으로 insert가 된다.
3. JSON key에 맞춰서 테이블에 value 저장
코드
insert into pgsql_json (first_name,last_name, email, gender)
select wa ->> 'first_name' as first_name
, wa ->> 'last_name' as last_name
, wa ->> 'email' as email
, wa ->> 'gender' as gender
from json_array_elements('
[
{ "id":4
, "first_name":"Merwyn"
, "last_name":"Meachen"
, "email":"mmeachen3@disqus.com"
, "gender":"Male"
}
]
') as wa
결과
설명
- json_array_elements() 로 json 객체 값을 접근하고 ->> 를 통해서 json에서 매핑되는 key의 value를 받아 올 수 있다.
- 추가적으로 ->> 를 사용하게 되면 return되는 값이 text타입이다
- -> 를 사용하게 되면 json에 저장되어 있는 " "을 포함한 값이 리턴된다.
728x90
'[PostgreSQL]' 카테고리의 다른 글
[PostgreSQL] comma separated 된 데이터 혹은 배열을 각 row로 출력하기 (0) | 2022.05.08 |
---|