latin1 로 저장된 db 를 euckr 또는 utf8로 변환하는 방법

by ADMINPLAY posted May 28, 2010
?

단축키

Prev이전 문서

Next다음 문서

ESC닫기

크게 작게 위로 아래로 댓글로 가기 인쇄
예전에 latin1로 저장된  db를 그냥 옵기게 되면 한글이 깨져서 보이지 않게 됩니다.

그럴때 사용하기 위한 방법 입니다.

1. 백업하기
  mysqldump -u{username} -p{password} {dbname} --default-character-set latin1 > {dump}.sql
  여기서 제일 중요한 것이 --default-character-set latin1 입니다.
  이것이 없으면 온전하게 백업이 되지 않으니 여러가지로 어렵습니다.

2. 문자셋 변환하기
    (문제가 되는 것이 보통 이 과정에서 메모장이나 에딕터를 이용하게 되면 깨져서 복원을 할때 에러가 발생합니다.) 
    utf8로 변환 할때
    iconv -c -f cp949 -t utf-8  원본파일명  > 변환될 파일명.sql
    euckr 이라면 변환 할때
    iconv -c -f cp949 -t euckr 원본파일명  > 변환될 파일명.sql

3. 복원될 테이블 구조 변환하기
  (문자셋 변환이 정상적으로 되었으니 이제 에딕터나 메모장을 사용해도 됩니다.)
    NAMES latin1;  =>  SET NAMES utf8; 으로 변경합니다.
    CHARSET=latin1;  => DEFAULT CHARSET=utf8; 으로 변경합니다.
    귀찬으면 latin1 =>  utf8; 변경해도 됩니다.
    새이름으로 저장하시고,

5, 디비 생성
    이때 utf8_general_ci 로 생성 합니다.

6, mysql 을 다시 시작 합니다.

7, 디비 복원
mysql --default-character-set utf8 -u{username} -p{password} {utf8-dbname} < {dump}.sql

  위 같이 하니 문제가 없군요