utf8로 구성된 데이터베이스를 mysqldump 하여 euckr로 넘기는 작업 방법은 2가지 존재한다
첫번째 mysqldump 기본 characterset 을 euckr로 지정해서 dump 후 데이터베이스 import
두번째 mysqldump characterset을 utf8 지정해서 database dump 후 iconv 변경 후 import 작업
가급적 첫번째 작업으로 문제없이 옮겨진다 / 안되면 두번째 방법으로 진행
1. 첫번째 방법으로 진행 원본 서버에서 Mysqldump를 이용하여 자료 dump
1 2 |
[root@localhost xinet_test]# mysqldump --default-character-set euckr -u root -p xinet_test > xinet_test_euckr.sql Enter password: |
대상 서버에서 데이터베이스 import를 진행하면 되는데 sed로 먼저 character-set 변경
### 대상서버에서 작업
1 |
[root@localhost ~]# sed -e 's/utf8/euckr/g' -i xinet_test_euckr.sql |
데이터베이스 import 작업
1 2 |
[root@localhost ~]# mysql --default-character-set=euckr -u root -p xinet_test < xinet_test_euckr.sql Enter password: |
정상적으로 import 되었다면 데이터베이스 및 테이블 그리고 데이터 확인
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 |
mysql> use xinet_test; Database changed mysql> show create database xinet_test; +------------+----------------------------------------------------------------------+ | Database | Create Database | +------------+----------------------------------------------------------------------+ | xinet_test | CREATE DATABASE `xinet_test` /*!40100 DEFAULT CHARACTER SET euckr */ | +------------+----------------------------------------------------------------------+ 1 row in set (0.00 sec) mysql> show create table users; +-------+---------------------------------------------------------------------------+ | Table | Create Table | +-------+---------------------------------------------------------------------------+ | users | CREATE TABLE `users` ( `UID` int(11) NOT NULL auto_increment, `ID` varchar(12) NOT NULL default '', `PWD` varchar(15) NOT NULL default '', `Name` varchar(15) NOT NULL default '', `Address1` varchar(100) NOT NULL default '', PRIMARY KEY (`UID`) ) ENGINE=MyISAM AUTO_INCREMENT=491 DEFAULT CHARSET=euckr | +-------+--------------------------------------------------------------------------+ 1 row in set (0.00 sec) ### 데이터 확인 mysql> select * from users; +-----+-----------+-----------------+----------+------------------------+ | UID | ID | PWD | Name | Address1 | +-----+-----------+-----------------+----------+------------------------+ | 391 | david | sadfn123411234 | 투포환 | 서울동작구사당 | | 392 | dgoo134 | tde7871233r8 | 잔다르 | 전북 전주시 완산읍 | | 394 | addm12134 | 12adf3qfasdfwe | 누구냐 | 광주시 광산구 | | 484 | sososo | rlad124frudxo | 메시 | 경북 울진구 울진읍 | | 485 | hihihi | js0dasf10123 | 호날두 | 부산시 사하구 사하동 | | 486 | uplus | rmadd1sd23fhr47 | 윤택옹 | 제주도 서귀포시 남원읍 | | 487 | sorrent | rkddfa0497 | 고빌구 | 충남 천안시 유성면 | | 465 | test123 | k1asdfdsd2u1331 | 홍길동 | 서울시 종로구 을지로 | | 488 | sksksk | k134aaadjskhs79 | 유산슬 | 서울시 은평구 응암동 | | 489 | ktktkt | enqeasdfadf134n | 진반장 | 경기 광명시 오리로 | | 490 | cshi0000 | kkadfdfdfi97228 | 시골청년 | 서울시 금천구 가산동 | +-----+-----------+-----------------+----------+------------------------+ 11 rows in set (0.00 sec) |
2. 두번째 방법 기본 케릭터셋을 utf8 지정하고 dump 후 iconv 및 sed 변환
### 원본서버에서 작업
1 2 |
[root@localhost xinet_test]# mysqldump --default-character-set utf8 -u root -p xinet_test > xinet_test_utf8.sql Enter password: |
### 대상서버로 가서 작업
dump 받은 파일의 문자셋을 확인하면 utf8로 구성되어 있다
1 2 |
[root@localhost ~]# file -bi xinet_test_utf8.sql text/plain; charset=utf-8 |
해당 파일을 iconv로 변경하자 utf8 -> euckr 로 변경
1 2 3 4 5 6 |
[root@localhost ~]# iconv -c -f utf8 -t euc-kr xinet_test_utf8.sql > xinet_test_euckr.sql ### file 명령어로 확인하면 euckr로 변경된것을 확인 [root@localhost ~]# file -bi xinet_test_euckr.sql text/plain; charset=iso-8859-1 |
테이블의 utf8 로 구성된 것을 euckr로 변경 작업
1 |
[root@localhost ~]# sed -e 's/utf8/euckr/g' -i xinet_test_euckr.sql |
사전 준비 작업이 다 완료되었으면 database import 작업
1 2 |
[root@localhost ~]# mysql --default-character-set=euckr -u root -p xinet_test < xinet_test_euckr.sql Enter password: |
다 들어갔으면 데이터 확인
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 |
mysql> use xinet_test; Database changed mysql> show create database xinet_test; +------------+----------------------------------------------------------------------+ | Database | Create Database | +------------+----------------------------------------------------------------------+ | xinet_test | CREATE DATABASE `xinet_test` /*!40100 DEFAULT CHARACTER SET euckr */ | +------------+----------------------------------------------------------------------+ 1 row in set (0.00 sec) mysql> show create table users; +-------+---------------------------------------------------------------------------+ | Table | Create Table | +-------+---------------------------------------------------------------------------+ | users | CREATE TABLE `users` ( `UID` int(11) NOT NULL auto_increment, `ID` varchar(12) NOT NULL default '', `PWD` varchar(15) NOT NULL default '', `Name` varchar(15) NOT NULL default '', `Address1` varchar(100) NOT NULL default '', PRIMARY KEY (`UID`) ) ENGINE=MyISAM AUTO_INCREMENT=491 DEFAULT CHARSET=euckr | +-------+--------------------------------------------------------------------------+ 1 row in set (0.00 sec) mysql> select * from users; +-----+-----------+-----------------+----------+------------------------+ | UID | ID | PWD | Name | Address1 | +-----+-----------+-----------------+----------+------------------------+ | 391 | david | sadfn123411234 | 투포환 | 서울동작구사당 | | 392 | dgoo134 | tde7871233r8 | 잔다르 | 전북 전주시 완산읍 | | 394 | addm12134 | 12adf3qfasdfwe | 누구냐 | 광주시 광산구 | | 484 | sososo | rlad124frudxo | 메시 | 경북 울진구 울진읍 | | 485 | hihihi | js0dasf10123 | 호날두 | 부산시 사하구 사하동 | | 486 | uplus | rmadd1sd23fhr47 | 윤택옹 | 제주도 서귀포시 남원읍 | | 487 | sorrent | rkddfa0497 | 고빌구 | 충남 천안시 유성면 | | 465 | test123 | k1asdfdsd2u1331 | 홍길동 | 서울시 종로구 을지로 | | 488 | sksksk | k134aaadjskhs79 | 유산슬 | 서울시 은평구 응암동 | | 489 | ktktkt | enqeasdfadf134n | 진반장 | 경기 광명시 오리로 | | 490 | cshi0000 | kkadfdfdfi97228 | 시골청년 | 서울시 금천구 가산동 | +-----+-----------+-----------------+----------+------------------------+ 11 rows in set (0.00 sec) |