PostgreSQL의 JSON 필드에서 데이터 업데이트
- PostgreSQL의 JSON 데이터 유형
- PostgreSQL의 JSON 필드에 새 키-값 쌍 삽입
-
JSONB_SET()
을 사용하여 PostgreSQL의 JSON 필드에서 기존 데이터 업데이트
이 기사에서는 PostgreSQL을 사용하여 JSON 필드를 업데이트하는 방법에 대해 설명합니다.
PostgreSQL의 JSON 데이터 유형
PostgreSQL에는 JSON과 JSONB의 두 가지 JSON 데이터 유형이 있습니다. 다음 데이터로 채워진 다음 테이블이 있다고 가정해 보겠습니다.
postgres=# select * from product;
id | product | details
----+---------+---------------------------------------------------
1 | PC1 | {"CPU": "4.1 GHz", "HDD": "2TB", "RAM": "16GB"}
2 | PC2 | {"CPU": "3.1 GHz", "HDD": "1TB", "RAM": "8GB"}
3 | PC3 | {"CPU": "2.5 GHz", "HDD": "2.5TB", "RAM": "32GB"}
4 | PC4 | {"CPU": "3.5 GHz", "HDD": "2TB", "RAM": "64GB"}
5 | PC5 | {"CPU": "2.8 GHz", "HDD": "2TB", "RAM": "4GB"}
(5 rows)
다음 테이블을 생성하기 위해 아래 SQL 쿼리를 실행합니다.
CREATE TABLE product (
id INT,
product VARCHAR,
details JSONB
);
INSERT INTO product VALUES (1, 'PC1','{"CPU":"4.1 GHz", "RAM":"16GB", "HDD":"2TB"}');
INSERT INTO product VALUES (1, 'PC2','{"CPU":"3.1 GHz", "RAM":"8GB", "HDD":"1TB"}');
INSERT INTO product VALUES (1, 'PC3','{"CPU":"2.5 GHz", "RAM":"32GB", "HDD":"2.5TB"}');
INSERT INTO product VALUES (1, 'PC4','{"CPU":"3.5 GHz", "RAM":"64GB", "HDD":"2TB"}');
INSERT INTO product VALUES (1, 'PC5','{"CPU":"2.8 GHz", "RAM":"4GB", "HDD":"2TB"}');
PostgreSQL의 JSON 필드에 새 키-값 쌍 삽입
이제 테이블의 PC1
에 GPU
를 추가한다고 가정해 보겠습니다. 키는 GPU
이고 값은 RTX 3060
입니다.
일반 UPDATE
쿼리와 같은 UPDATE
명령을 사용하여 이를 삽입할 수 있습니다.
통사론:
UPDATE table_name
SET json_field_name = json_field_name || new_key_value
||
연산자는 새 JSON 개체를 이전 개체와 연결합니다. 이제 {"GPU":"RTX 3060"}
를 PC1
에 삽입하기 위한 SQL 쿼리는 다음과 같습니다.
UPDATE product
SET details = details || '{"GPU":"RTX 3060"}'
WHERE product='PC1';
이제 테이블에는 다음이 포함됩니다.
postgres=# select * from product;
id | product | details
----+---------+--------------------------------------------------------------------
2 | PC2 | {"CPU": "3.1 GHz", "HDD": "1TB", "RAM": "8GB"}
3 | PC3 | {"CPU": "2.5 GHz", "HDD": "2.5TB", "RAM": "32GB"}
4 | PC4 | {"CPU": "3.5 GHz", "HDD": "2TB", "RAM": "64GB"}
5 | PC5 | {"CPU": "2.8 GHz", "HDD": "2TB", "RAM": "4GB"}
1 | PC1 | {"CPU": "4.1 GHz", "GPU": "RTX 3060", "HDD": "2TB", "RAM": "16GB"}
(5 rows)
PC1
에 새 키-값 "GPU": "RTX 3060"
이 있는 것을 볼 수 있습니다.
JSONB_SET()
을 사용하여 PostgreSQL의 JSON 필드에서 기존 데이터 업데이트
PC1
프로세서를 Ryzen 9
로 업데이트하라는 요청을 받았다고 가정합니다. JSON 데이터 유형의 기존 값을 수정하려면 JSONB_SET()
메서드를 사용해야 합니다.
JSON 데이터 유형 열, 키 및 값의 3가지 매개변수를 사용합니다. 따라서 PC1
의 CPU
를 Ryzen 9
로 업데이트하려면 다음 쿼리를 수행해야 합니다.
UPDATE product
SET details = JSONB_SET(details,'{CPU}','"Ryzen 9"')
WHERE product='PC1';
업데이트 후 테이블에는 다음 데이터가 있습니다.
postgres=# select * from product;
id | product | details
----+---------+--------------------------------------------------------------------
2 | PC2 | {"CPU": "3.1 GHz", "HDD": "1TB", "RAM": "8GB"}
3 | PC3 | {"CPU": "2.5 GHz", "HDD": "2.5TB", "RAM": "32GB"}
4 | PC4 | {"CPU": "3.5 GHz", "HDD": "2TB", "RAM": "64GB"}
5 | PC5 | {"CPU": "2.8 GHz", "HDD": "2TB", "RAM": "4GB"}
1 | PC1 | {"CPU": "Ryzen 9", "GPU": "RTX 3060", "HDD": "2TB", "RAM": "16GB"}
(5 rows)
CPU
가 성공적으로 업데이트된 것을 볼 수 있습니다.
JSONB_SET()
을 사용할 때 다음 사항을 확인해야 합니다.
- 첫 번째 매개변수는 JSON 데이터 유형 열입니다.
- 두 번째 매개변수는 중괄호(작은따옴표 내부)로 묶인 키 이름입니다.
- 세 번째 매개변수는 작은따옴표 안에 있는 업데이트된 값입니다.
이 블로그에서 PostgreSQL용 JSON 데이터 유형에 대해 자세히 알아보세요. 또한 공식 문서를 방문할 수 있습니다.