대용량 데이터 구축 실습

선봉·2023년 2월 20일
0

MySQL

목록 보기
14/36

상황)

영화 대본과 영상 데이터를 저장하는데 데이터가 NULL로 들어있는 경우

max_allowed_packet의 용량이 4MB 정도로 너무 작기 때문이고

secure_file_priv의 보안 허용 경로에 현재 작업하는 폴더의 경로를 추가 시켜야 보안 허용이 된다.

Create database moviedb;

use moviedb;

Create TABLE movietbl
(movie_id INT,
movie_title VARCHAR(30),
movie_director VARCHAR(20),
movie_star VARCHAR(20),
movie_script LONGTEXT,
movie_film LONGBLOB
) DEFAULT CHARSET = utf8mb4;

INSERT INTO movietbl VALUES (
	1,
	'쉰들러 리스트',
    '스필버그',
    '리암 니슨',
	load_file('C:\SQL/Schindler.txt'),
    load_file('C:\SQL/Schindler.mp4'));
SELECT * from movietbl; -- 대본과 영상이 저장되지 않았다.
-- 이유 : 
-- 1. max_allowed_packet의 값이 4MB 정도로 너무 작기때문이다.
show variables LIKE 'max_allowed_packet'; -- 크기확인 4MB
-- 2. 해당 폴더가 보안상 허용이 되어야 하기 때문이다.
SHOW variables LIKE 'secure_file_priv'; -- 보안 허용된 폴더가 나오는데 여기에 추가해야함

⭐작업 순서

  1. Powershell을 관리자 모드로 실행
  2. cmd 활성화
  3. 파일 이동(cd 명령어)
    1. CD %PROGRAMDATA%
    2. CD MySQL
    3. CD "MySQL Server 8.0"
    4. DIR 폴더에 있는 파일 보여줌
  4. my.ini(MySQL설정 파일) 메모장으로 실행 후 값 변경
    1. NOTEPAD my.ini

기존 아래에 새로 추가
설정 후 저장


mysql을 재실행 해야 한다.

명령어

  1. NET STOP MySQL

  2. NET START MySQL

👍

TRUNCATE movietbl; -- 기존 행 전부삭제

INSERT INTO movietbl VALUES (
	1,
	'쉰들러 리스트',
    '스필버그',
    '리암 니슨',
	LOAD_FILE('C:/SQL/Schindler.txt'),
    LOAD_FILE('C:/SQL/Schindler.mp4'));

INSERT INTO movietbl VALUES (
	2, 
    '쇼생크탈출',
    '프랭크다라본트',
    '팀 로빈스',
    load_file('C:/SQL/Shawshank.txt'),
    load_file('C:/SQL/Shawshank.mp4'));

INSERT INTO movietbl VALUES (
	3, 
    '라스트모히칸',
    '마이클 만',
    '다니엘 데이 루이스',
    load_file('C:/SQL/Mohican.txt'),
    load_file('C:/SQL/Mohican.mp4'));
    
-- 영화 대본 다운로드

SELECT movie_script FROM movietbl WHERE movie_id=1 
	INTO OUTFILE 'C:/SQL/Schindler_out.txt'  
	LINES TERMINATED BY '\\n';

-- 영화 영상 다운로드
SELECT movie_film FROM movietbl WHERE movie_id=3 
	INTO DUMPFILE 'C:/SQL/Mohican_out.mp4' ; 

SELECT * FROM movietbl;

profile
백엔드 개발자

0개의 댓글

관련 채용 정보