여러가지로 검색하고 해보아도 초보입장에서 쉽게 이해가고, 되는 내용들이 없어 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)
'프로그래밍 > MySQL' 카테고리의 다른 글
[MySQL] Rank계산 (0) | 2014.07.08 |
---|---|
mysql select 할 때 순환자 넘버링하기 (iterator numbering) (0) | 2014.07.04 |
mysql date 현재시간으로 insert 하기 (0) | 2014.06.23 |
MySQL 백업 및 복원 (0) | 2014.06.20 |
MySQL 파일로된 *.sql 파일 MySQL 에서 import(불러오기) 하기 (0) | 2014.06.20 |