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';