본문 바로가기

코딩공부

[SQL] MYSQL 대용량 텍스트, 영상 업로드 방법

✍️ Study Note

 

 


 

 

SQL 기본 용량인 4M 이상의 파일 저장하고 싶을 때,

 

1. '최대 파일크기' 확인

SHOW VARIABLES LIKE 'MAX_ALLOWED_PACKET';

기본 용량 4M 확인 가능.

 

2. '파일 업로드/다운로드 폴더'의 경로 허용여부 확인

SHOW VARIABLE LIKE 'SECURE_FILE_PRIV';

현재 '업로드하려는 파일의 폴더경로'가 없는 것을 확인 가능

 

3. '최대 파일크기' 수정 & '업로드 폴더의 경로' 허용 추가

(1) 명령프롬프트 관리자모드 실시 (관리자모드 필수. 이후 에러 발생 가능)

(2) SQL이 설치, 실행되는 드라이브로 이동

  • C드라이브일 경우, 그대로 진행
  • D드라이브일 경우, 'D: '기재

(3) 아래 명령어 차례로 기재

  1. CMD
  2. CD %PROGRAMDATA%
  3. CD MYSQL
  4. CD : MYSQL SERVER 8.0"
  5. DIR
  6. NOTEPAD MY.INI

 

(4) MY.INI 파일이 메모장으로 열리면 수정 작업 실행

['최대 파일크기' 수정]

  • 'SECURE-FILE-PRIV' 검색
  • 기존에 입력되어있는 'SECURE-FILE-PRIV' 문장 아래에 한 문장 더 추가
  • 추가할 문장 = SECURE-FILE PRIV='파일경로'

['업로드 폴더의 경로' 허용 추가]

  • MAX_ALLOWED_PACKET 검색
  • 400를 1024M(1G)로 수정

 

(5) 메모장 저장 후 닫기

 

4. 수정한 MY.INI 설정 파일을 적용하기 위해 MYSQL 새로 시작

NET STOP MYSQL
NET START MYSQL

 

 

 


 

대용량 파일 업로드가 가능한지 확인 실습

1. 테이블 생성

CREATE DATABASE MOVIEDB;
CREATE TABLE MOVIETBL 
(MOVIE_ID INT,
 MOVIE_TITLE VARCHAR(30),
 MOVIE_DIRECTOR VARCHAR(30),
 MOVIE_STAR VARCHAR(30),
 MOVIE_SCRIPT LONGTEXT,
 MOVIE_FILM LONGBLOB
) DEFAULT CHARSET = utf8mb4;

 

- DEFAULT CHARSET = utf8mb4; -> 기본 문자세트를 utf8mb4로 한다는 의미.

 

2. 데이터 업로드

-- 데이터 입력
INSERT INTO movietbl VALUES 
(1, '쉰들러 리스트', '스필버그', '리암 니슨', LOAD_FILE('D:/Mysql/movies/Schindler.TXT'), LOAD_FILE('D:/Mysql/movies/Schindler.MP4')),
(2, '쇼생크 탈출', '프랭크 다라본트', '팀 로빈스', LOAD_FILE('D:/Mysql/movies/Shawshank.TXT'), LOAD_FILE('D:/Mysql/movies/Shawshank.MP4')), 
(3, '라스트 모히칸', '마이클 만', '다니엘 데이 루이스', LOAD_FILE('D:/Mysql/movies/Mohican.TXT'), LOAD_FILE('D:/Mysql/movies/Mohican.MP4'));

- 작성 시 유의사항

  • LOAD_FILE('파일경로')  -> 따옴표 잊으면 안됨
  • MY.INI에 업로드한 폴더경로와 쿼리의 폴더경로가 한글자도 틀리면 안됨. (\ 와 / )

 

3. 데이터 업로드 결과 확인

긴 텍스트 파일, 영상 파일 등 대용량 파일도 업로드됐음을 확인 가능

 

 

4. 업로드한 파일 다시 다운로드도 가능

SELECT MOVIE_SCRIPT FROM MOVIETBL WHERE MOVIE_ID =1
INTO OUTFILE 'D:/Mysql/movies/SCHINDLER_OUT.TXT'
    LINES TERMINATED BY '\\N';


SELECT MOVIE_FILM FROM movietbl WHERE MOVIE_ID = 3
INTO DUMPFILE 'D:/Mysql/movies/Mohican_OUT.MP4';

- 다운로드를 위한 명령어

  • LONGTEXT 형식 : INTO OUTFILE '저장할 파일의 이름 & 주소' 
  • LONGBLOB 형식 : INTO DUMPFILE '저장할 파일의 이름 & 주소'

- LINES TERMINATED BY '\\N'  : 줄바꿈 문자도 그대로 저장한다는 의미.