Knowledge Map

DB 데이타 인코딩 변환 본문

DataBase

DB 데이타 인코딩 변환

2016. 6. 20. 17:16

한동안 DB 데이터 문자셋 변환을 어떻게 해야하는지 몰라서 고생을 좀했다. 

이미 알고 있었던 건데 마음이 급해서 생각이 안난거 보면 참 웃음만 나온다.



DB의 인코딩 상태 알기


show variables like 'c%' 


각 테이블의 문자셋을 알고자 할때


show full columns from yourtable


일단 latin1 -> utf8로 변환하는 것을 해봤기 때문에 이것에 대해서만 써볼려고 한다.

먼저 변환하려고 하는 DB 데이터를 export 한다.


mysqldump -u root -p --default-character-set=laint1 myDB > myDB_0620.sql


굳이  뒤에 default character set을 붙이는 이유는 간혹 테이블 인코딩은 latin1인데 DB 인코딩은 utf8인 경우가 있다.

이럴 경우 mysqldump를 하면서 자동으로 그 형식이 utf8로 떠진다. 즉 안은 latin1인데 그 상태에서 utf8로 처리해버리니까

안의 한글 내용이 다 깨지게 되는 것이다.


따라서 이러한 것을 방지하기 위해서 명시를 해주는 것이다.


이렇게 한다음 이것을 메모장 or 인코딩 변환해서 저장 가능한 에디터로 연다. (메모장, sublime_text3, sqlgate, editplus등등)

그리고 그것들을 다른 이름으로 저장하기를 하면서 utf8로 인코딩을 변환하면서 저장한다.




그러면 끝난다. 물론 이렇게 저장해 놓고나서 파일을 열어서 latin1으로 되어 있는 것들은 utf8로 바꿔준다.


이상하게도 이렇게 한다음 다시 import를 시키는데 계속 에러가 나고 제대로 되지 않아서 mysql 워크 벤치, sqlgate등을 이용해서

import할 데이터를 복붙해서 insert 시키는 방식으로 했다. 


일단 데이터 자체는 인코딩 변환이 제대로 되어 있어서 입력한 이후에 제대로 출력되는 것을 볼수 있었다.

물론 입력되는 DB의 문자 인코딩이 UTF-8로 되어 있어야 하는 것은 당연하다. 그건 여러 방법이 있으니 패스.. 

set ~~ 을 쓰거나, my.ini에서 수정해야 할 것이다.



참고로 HTML이나 PHP 파일 문자 인코딩 또한 이러한 방식으로 변환할수 있다. 보통 euckr로 되어 있는 경우가 있는데 쉽게 UTF-8로 변환된다.

'DataBase' 카테고리의 다른 글

latin1 한글정렬  (0) 2016.07.22
join  (0) 2016.06.21
DB 설정 값, 문자셋 확인  (0) 2016.06.20
convert() 및 cast()  (0) 2016.06.17
mysql rownum  (0) 2016.06.02
Comments