데이터베이스/PostgreSQL

[PostgreSQL] 데이터베이스 인코딩 변경

세브웁스 2022. 6. 13. 16:00
반응형

Postgresql 특정 DB 인코딩 변경하기

 


순서

 

  • 백업본 생성
  • 기존 데이터베이스 삭제
  • 원하는 인코딩 형식의 DB 생성
  • 백업본 데이터 밀어 넣기 

예시

 

  • 복제하려는 DB명 : mcapi
  • 기존 인코딩 : UTF8

실습

 

0. 기존 데이터베이스 인코딩 확인

postgres-# \l
                                  List of databases
   Name    |  Owner   | Encoding |   Collate   |    Ctype    |   Access privileges
-----------+----------+----------+-------------+-------------+-----------------------
 mcapi     | mcapi    | UTF8     | en_US.UTF-8 | en_US.UTF-8 |
 postgres  | postgres | UTF8     | en_US.UTF-8 | en_US.UTF-8 |
 template0 | postgres | UTF8     | en_US.UTF-8 | en_US.UTF-8 | =c/postgres          +
           |          |          |             |             | postgres=CTc/postgres
 template1 | postgres | UTF8     | en_US.UTF-8 | en_US.UTF-8 | =c/postgres          +
           |          |          |             |             | postgres=CTc/postgres
(4 rows)

 

1. 백업본 생성

-bash-4.2$ pg_dump mcapi > mcapi_bak.sql

 

2. 기존 DB 삭제

postgres=# drop database mcapi
DROP DATABASE

 

3. 원하는 인코딩 형식의 DB 생성

 

create database mcapi encoding = '원하는인코딩';

 

4. 백업본 데이터 밀어넣기

 psql mcapi < postgres_DB_NAME_bak.sql

 


Thinking

공부를 하며 큰 작업도 아니고 고작 DB 인코딩 바꾸는데 데이터를 백업하고 새로 만들어야 하냐는 의문이 들었다.

하지만 각 인코딩마다 바이트가 다르기 때문에 그냥 바꾸면 문자열이 깨질 수도 있는 위험이 있다는 사실을 알게 되었다.

따라서 안전하게 덤프를 받아 원하는 인코딩에 밀어 넣는 방식을 채택했다.

 

같은 바이트의 인코딩 방식이라면 괜찮지 않을까?라는 의문을 남기고 포스팅을 마친다.

반응형