오늘은 소설입니다.
sun's longitude:239 54 16.81 
· 자유게시판 · 묻고답하기 · 알파문서 · RPMS list
· 사용자문서 · 팁/FAQ모음 · 리눅스Links · 자료실
· 서버정보 · 운영자 · Books/FAQ · FreeBSD
/board/delete.php:소스보기  
알파문서
자주 잊어먹거나, 메모해 둘 필요성이 있는 팁이나 문서, 기타 등등
[*** 쓰기 금지단어 패턴 ***]
글 본문 중간에 업로드할 이미지를 추가하는 방법 : @@이미지이름@@
ex) @@foo.gif@@
 ★ 글 지우기 항목입니다. 한번 더 생각하시고 결정하십시오.!!!
제목 47 : [MySQL] text 자료 입력시 컬럼수가 다를 경우
 이름  산이 [홈]http://linuxchannel.net/
이글은

http://phpschool.com/bbs2/inc_view.html?id=36429&code=database2

에서 답변한 글을 가져온 글입니다.


>[제목] load infile~~ 할때, 이런 경우 어떻게 해야하죠
>[글쓴이] 헤줄렛
>
>제가 txt파일루,, 아래와 같이 넣은다고 가정해보겟습니다.
>
>1 | 김일남 | 남자 | 22
>2 | 김이녀 | 여자 | 27
>3 | 김삼남 | 남자 | 23
>4 | 김사남 | 남자 | 21
>
>이때, 테이블은 아래 정의문입니다.
>create table test (
> mb_uid int(15) not null auto_increment ,
> mb_name varchar(60) not null ,
> mb_age tinyint(3) unsigned not null ,
> primary key (mb_uid)
>);
>
>이 같이 정의하고,, load infile구문을 통해,, 저장하려고 합니다.
>
>문제는 txt는 줄변 구분자가 ( | )로 구분되어 있는데, 불필요한것은
>1 | 김일남 | 남자 | 22
>-- ------ ---- --
>필요 필요 불필요 필요
>
>성별부분이네요..
>load infile~할 경우 순서대루 읽어들이는데,, 위 남자까지의 내용만 테이>블에 저장한다는거죠..
>이거.. 원하는 형태루, 성별에 해당되는 데이터를 빼구, 나머지 고유번호,
>이름, 나이만,, 넣는 방법좀 알려주세요..
>그럼 즐일되세요..
>

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

상위의 text 파일은 간단하므로 쉽게 수정이 가능하네요

shell> sed 's/|\(남자\|여자\)|/|/gi' data.txt > data.new.txt

그외...

text 파일에서 직접 수정하기 힘들다면 다음의 방법을 사용해 보세요.

우선 txt 파일의 자료 컬럼수과 table 컬럼수가 서로 같거나 table 컬럼수가
더 많아야 합니다.
그런데,
현재 상황이 그 반대이므로 table에서 특정 컬럼을 추가해주어야 합니다.

[table에 임시 mb_sex 컬럼 추가]

mysql> ALTER TABLE test ADD mb_sex varchar(4) NULL AFTER mb_name;

[데이터 입력]

mysql> LOAD DATA LOCAL INFILE '/path/to/data.txt' INTO TABLE test
> FIELDS TERMINATED BY '|';

[mb_sex 컬럼 삭제]

mysql> ALTER TABLE test DROP mb_sex;

이런식으로 하면 됩니다
2003년 07월 14일 10:58:52 월(오전)  from 61.254.75.40
0
암호: 공용 보안 SSL 서버가 준비되기 전까지는 off 합니다

apache lighttpd linuxchannel.net 
Copyright 1997-2024. linuxchannel.net. All rights reserved.

Page loading: 0.01(server) + (network) + (browser) seconds