728x90

여러가지로 검색하고 해보아도 초보입장에서 쉽게 이해가고, 되는 내용들이 없어 Mysql사이트의 다큐먼트를 참고로해서 작업해보았습니다. 


다른방법들에 비해 약간 번거롭긴하지만, 정확하고 빠른 데이타 삽입이 가능하여, 혹시 저처럼 해매시는 분들이 계실까 하여 올려봅니다. 


[상황] 


mysql에 사용할 db와 테이블을 생성하였으며, 각 테이블에는 사용할 컬럼이 정의되어있다. 그런데 이곳에 엑셀파일로 가지고 있는 데이타를 한방에 빠르게 입력하고 싶다. 


예) 데이타 베이스: testdb 

    테이블명      : member 

    member 테이블의 컬럼: name,id,password,phone,mphone,email 


    데이타 베이스의 캐릭터셋은 utf-8이다. 


컬럼데이타에 해당하는 엑셀파일 memberinfo.xls파일을 가지고있다. 


==================================================== 


상황은 다들 이해 가시죠?? 지금부터 작업을 시작해 보겠습니다. 


1. 엑셀파일에는 입력할 데이타가 테이블 컬럼 순서에 맞게 입력이 되어있어야 합니다. 

    즉, 엑셀파일의 왼쪽부터 "이름/아이디/패스워드/전화번호/핸드폰/이메일" 이런식 

    으로 데이타가 입력되어있어야 합니다. 컬럼명은 필요없습니다. 데이타만.... 


2. 이상태의 엑셀파일을 다른이름으로 저장 합니다. ==>txt파일(탭으로분리) 


3. 이부분이 중요합니다. 이부분이 생략되면 한글이 정상적으로 입력되지 않습니다. 

    생성된 텍스트 파일을 윈도우에서 열어줍니다. 

    그냥 열기만 하면됩니다.  열린상태에서 그대로 다른이름으로 저장 합니다. 

    이때, 가장아래 쪽에 보면 인코딩 방식을 선택할 수 있는 곳이있습니다. 

    그곳에서 인코딩 방식을 UTF-8로 선택하고 저장합니다. 


4. 이렇게 utf-8방식으로 저장된 텍스트 파일을 ftp를 이용해 계정에 올립니다. 


5. ssh/telnet등을 이용해 계정에 접속하고 mysql에 접속합니다. 


6. 사용할 DB를 선택하시고, 예) mysql> use testdb; 


7. 다음과 같이 입력합니다. 

  


    load data infile '파일경로' into table 테이블명 (컬럼네임1,컬럼네임2,----) 


  위의 예로 작성해 보면 

(계정은 test / 파일업로드 경로는 /home/test ,텍스트파일은 member.txt, 테이블명은 member라 가정합니다.) 


load data infile '/home/test/member.txt' into table member (name,id,password,phone,mphone,email) 

Posted by 앗뜨거
,