✍️ 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) 아래 명령어 차례로 기재
- CMD
- CD %PROGRAMDATA%
- CD MYSQL
- CD : MYSQL SERVER 8.0"
- DIR
- 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' : 줄바꿈 문자도 그대로 저장한다는 의미.
'코딩공부' 카테고리의 다른 글
[SQL] MYSQL 테이블 삭제, 수정 & 제약조건 추가, 삭제, 비활성화 (0) | 2021.10.18 |
---|---|
[SQL] MYSQL Workbench 테이블 생성, 제약조건 종류 (0) | 2021.10.17 |
[SQL] MYSQL JOIN (INNER, OUTER, SELF, CROSS) (0) | 2021.10.15 |
[SQL] MySQL 내장함수 #2 (수학, 날짜&시간, 시스템 정보 함수) (0) | 2021.10.13 |
[SQL] MySQL 내장함수 #1 (제어흐름함수, 문자열 함수) (0) | 2021.10.12 |