응용개발

CUBRID에서 euc-kr의 한글 데이터를 utf-8의 한글 데이터로 변경 시 주의할 점

by cubebridge posted Apr 01, 2010
CUBRID는 문자 셑에 독립적이다. 독립적이란 어떤 한가지의 문자 셑을 입력값으로 갖는 것이 아니라 사용자가 사용한 문자 셑의 값을 그대로 DB에 저장한다는 것이다. 이는 타 DBMS를 사용하는 사용자에게 작은 혼동을 줄 수 있는 사항이기도 하다.

CUBRID Manager Client가 질의 편집기에 기본 문자 셑으로 설정되어 있는 것은 euc-kr이다. 개발 시 CM을 이용하여 데이터를 입력하고, 개발 중 utf-8로 변환이 필요할 경우가 발생한다. 이때 이미 입력한 데이터를 이전할 경우 아래와 같은 오류가 발생할 수 있다.
예)
...
Data overflow on data type "character varying".
...

위의 메시지는 현재 data type 중 char, varchar type의 길이를 넘어서는 데이터 값이 들어왔다는 메시지이다. 스키마가 동일할 텐데 왜 오류가 발생하는 것인가? 
1. 해당 현상은 한글 데이터에서 발생한다
2. euc-kr에서 한글은 2바이트를 사용하지만 utf-8에서는 한글은 3바이트를 사용한다.
3. 따라서 원본(euc-kr환경) 스키마를 그대로 가져와 생성한 경우 한글 데이터 입력 시 위와 같은 오류가 발생할 수 있다.
4. euc-kr데이터를 utf-8데이터로 변경하기 위해서는 스키마에서 char, varchar의 길이를 1.5배로 크게 설정해 줘야 한다.
5. 데이터 이전을 위해 euc-kr환경에서 데이터를 읽어 내었다면, 해당 파일을 utf-8로 변경한 후 새로운 DB에 입력 작업을 해야한다. CUBRID는 입력하는대로 받기 때문에 euc-kr형태의 데이터는 그대로 euc-kr형대로 받아 들이기 때문이다.

위의 사항은 타DBMS에서 CUBRID로의 이전 시에도 적용된다. uft-8이 아닌 형태로 사용했던 한글 데이터를 CUBRID로 이전할 경우 반드시 위와 같은 항목들을 살펴보는 것이 필요하다.

Articles

1 2 3