[PostgreSQL] PostgreSQL에서 특정 값의 존재 여부 확인하여 조회하기
·
개발 (Development)/PostgreSQL
PostgreSQL에서 테이블 A의 특정 컬럼 값이 B 또는 C 테이블에 존재하는지 여부를 조회할 때, 이를 'O' 또는 'X'로 표시하는 방법을 소개합니다.1. 문제 정의테이블 A의 특정 컬럼 값이 B 또는 C 테이블에 존재하는지 확인하고, 결과에서만 이를 'O' 또는 'X'로 표시하려고 합니다.2. SQL 쿼리 작성다음은 EXISTS 서브쿼리와 CASE 문을 활용한 SQL 쿼리입니다.SELECT A.*, CASE WHEN EXISTS (SELECT 1 FROM B WHERE B.target_column = A.target_column) THEN 'O' ELSE 'X' END AS is_in_b, CASE WHEN EXISTS (SELECT 1..
PostgreSQL에서 기존 데이터가 있는 상태에서 복원하기
·
개발 (Development)/PostgreSQL
PostgreSQL에서 기존 데이터가 있는 상태에서 .tar 형식의 백업 파일을 pg_restore 명령어로 복원하면 여러 가지 상황이 발생할 수 있습니다. 데이터 충돌을 방지하고 안전하게 복원하는 방법은 아래와 같습니다.1. .tar 백업 파일 복원 방법1.1 기존 데이터를 유지하면서 복원 (추가/병합)pg_restore -U username -d dbname backup.tar기본적으로 기존 데이터는 유지되며, 백업된 데이터가 추가됩니다.동일한 PRIMARY KEY나 UNIQUE 값이 있는 경우 오류가 발생할 수 있습니다.1.2 기존 데이터를 삭제하고 복원 (초기화 후 복원)기존 테이블/데이터 삭제 후 복구 (--clean 옵션)pg_restore -U username -d dbname --clean..
[PostgreSQL] SQL Error Handling
·
개발 (Development)/PostgreSQL
.sql 파일을 실행할 때 실행 방식에 따라 에러 발생 시 다음 문장의 실행 여부가 달라집니다.1. 일반적인 SQL 실행 방식대부분의 SQL 실행 도구(MySQL, PostgreSQL, Oracle 등)에서는 각각의 SQL 문장이 독립적으로 실행됩니다. 따라서 한 문장에서 에러가 발생해도 다음 문장이 실행될 수 있습니다.예를 들어, PostgreSQL에서 psql을 사용하여 script.sql을 실행하면:psql -d mydb -f script.sql이 경우, 한 문장에서 에러가 발생해도 다음 문장은 그대로 실행됩니다.2. 트랜잭션(TRANSACTION) 내에서 실행할 경우BEGIN ... COMMIT / ROLLBACK 블록 안에서 실행하면, 에러 발생 시 전체 트랜잭션이 롤백될 수 있습니다. 트랜잭션..
[PostgreSQL] JSON 컬럼에서 Key-Value 추출 및 MyBatis 연동
·
개발 (Development)/PostgreSQL
PostgreSQL에서는 json 또는 jsonb 타입을 사용하여 JSON 데이터를 저장할 수 있습니다. 하지만 이를 테이블 형태로 변환하여 조회할 때는 추가적인 함수가 필요합니다. 특히 MyBatis를 활용하여 Java에서 HashMap 형태로 데이터를 가져오려면 적절한 쿼리 작성이 중요합니다. 이번 글에서는 PostgreSQL에서 JSON 데이터를 key-value 형태로 변환하는 방법과 MyBatis를 이용해 이를 Java에서 활용하는 방법을 알아보겠습니다.1. PostgreSQL에서 JSON 데이터를 Key-Value 형태로 변환하기1.1 테이블 및 샘플 데이터 생성먼저 JSON 데이터를 저장하는 status 컬럼을 포함한 테이블을 생성하고, 샘플 데이터를 삽입합니다.CREATE TABLE tes..
[PostgreSQL/TimescaleDB] Hypertable과 Chunk를 포함한 최소 크기 덤프 방법
·
개발 (Development)/PostgreSQL
PostgreSQL에서 Hypertable과 Chunk를 포함한 최소 크기 덤프 방법PostgreSQL에서 TimescaleDB의 Hypertable과 Chunk를 모두 포함하면서 덤프 파일 크기를 최소화하는 방법을 소개합니다. 효율적인 덤프를 위해 압축, 불필요한 데이터 제외, 사전 데이터 최적화 등의 전략을 사용합니다.1. 압축을 최대화한 pg_dump 사용TimescaleDB의 Hypertable과 Chunk를 포함하면서 덤프 크기를 최소화하려면 pg_dump의 압축 기능을 적극 활용해야 합니다.pg_dump -U -h -p -d \ --format=custom \ --compress=9 \ --file=backup.dump--format=custom : 가장 효율적인 압축이 가능한 C..