Database/MySQL

파일을 읽어오는 내장함수 LOAD_FILE() & 데이터 파일로 내보내기

olli2 2021. 11. 27. 00:03

LOAD_FILE() 함수

 : 대용량 데이터 저장

 :  LOAD_FILE(파일 경로)

 : 파일 용량이 현재 설정된 크기보다 큰 경우 데이터 저장 안 됨

   -> my.ini 파일에서 파일 최대 크기 변수 변경

   -> 파일 업로드/다운로드 하는 폴더 경로를 별도로 허용하는 내용 추가 (파일이 저장 경로 지정)

 

-- movie 테이블 생성
CREATE TABLE movie (
	movieId VARCHAR(10) NOT NULL PRIMARY KEY,
    movieTitle VARCHAR(30),
    movieDirector VARCHAR(20),
    movieStar VARCHAR(20),
    movieScript LONGTEXT,
    movieFilm LONGBLOB
);


-- 데이터 입력
INSERT INTO movie 
	   VALUES ('1', '쉰드러 리스트', '스필버그', '리암 니슨',
			   LOAD_FILE('C:/dbWorkspace/movies/Schindler.txt'),
               LOAD_FILE('C:/dbWorkspace/movies/Schindler.mp4'));


-- (1) 저장할 수 있는 파일의 최대 크기 변수 확인
SHOW variables LIKE 'max_allowed_packet'; 

-- (2) 파일 업로드/다운로드 경로 변수 확인
SHOW variables LIKE 'secure_file_priv';

 

 

데이터 파일로 내보내기

 : 테이블에 저장된 Text 타입과 BLOB 타입의 데이터를 파일로 내보내기

SELECT 열이름 FROM 테이블 WHERE 조건 INTO OUTFILE ‘경로/파일명.txt’ LINES TERMINATED BY ‘\\n’;
SELECT 열이름 FROM 테이블 WHERE 조건 INTO OUTFILE ‘경로/ 파일명.mp4’;
-- LONGTEXT 타입의 영화 대본 데이터를 텍스트 파일로 내보내기
SELECT movieScript FROM movie WHERE movieId = '1' INTO OUTFILE 'C:/dbWorkspace/movies/Schindler_out2.txt' LINES TERMINATED BY '\\n';
    
-- 동영상 파일(바이너리 파일)로 내보기
SELECT movieFilm FROM movie WHERE movieId = '1' INTO OUTFILE 'C:/dbWorkspace/movies/Schindler_out.mp4';

-- 도서 테이블의 모든 데이터를 텍스트 파일로 내보내기
SELECT * FROM book INTO OUTFILE 'C:/dbWorkspace/movies/book_out.txt';