DBMS/MySQL 5.1

데이터베이스(테이블의 컬럼)에 맞춘 텍스트파일 테이블에 저장하기

본클라쓰 2009. 3. 27. 18:34

 

테이블에 데이터를 저장하기 위해서는 'INSERT' 구문을 이용하거나 'LOAD DATA' 구문을 이용합니다. INSERT 문은 쿼리문을 통해 직접적으로 데이터를 테이블에 저장하는 방법이며 LOAD DATA 구문은 텍스트 파일을 테이블에 저장하는 방법입니다. 이 때 텍스트 파일은 한 라인당 하나의 기록을 가지고 있어야 하며 라인을 구분하는 라인 터미네이터는 '\n' 또는 '\r'값을 기준으로 라인을 구분합니다. 한 라인에 있는 컬럼을 구분하는 것은 '\t(탭)' 값을 기준으로 컬럼을 구분합니다. 또한, 값을 작성할 때 인용부호를 사용해서는 안됩니다.

 

 

■ 테이블 스키마와 같은 형식의 텍스트 파일을 테이블에 저장하는 명령어

 

LOAD DATA INFILE '/경로/파일명.txt' INTO TABLE 테이블명;

 

이 때, 텍스트 파일의 라인 터미네이터(줄바꿈)를 변경할 때는 다음과 같은 옵션을 주어야 합니다.

 

> LOAD DATA INFILE '/경로/파일명.txt' INTO TABLE 테이블명 LINE TERMINATED BY '값';

 

데이터베이스의 테이블에 바로 저장할 수 있는 파일의 형식은 두 종류가 있습니다. 그 두 종류는 텍스트 파일과 쿼리 파일입니다. 각각의 파일은 장단점이 있습니다. 텍스트 파일을 테이블에 저장하는 것은 쿼리 파일을 테이블에 저장하는 방법보다 빠른 수행 시간을 보여줍니다. 하지만 텍스트 파일의 위치는 데이터베이스의 루트 디렉토리 기준으로 위치해야 하지만 쿼리 파일은 데이터베이스에서 접근할 수 있는 위치에만 있으면 위치에 상관없이 수행할 수 있습니다.

 

 

 

 

※ 주의

 텍스트 파일의 경로값은 데이터베이스 서버의 루트 디렉토리를 기준의 상대 경로값을 가져야 합니다. 시스템 상의 경로 값으로서는 텍스트 파일을 읽어 데이터베이스 테이블에 저장할 수 없습니다. 만약 시스템 상의 경로를 기준으로 텍스트 파일을 업로드 할 경우에는 다음과 같은 오류 코드를 출력한 후 수행하지 않습니다.

 

ERROR : access denied for user : root@localhost : ( using password : no )