LongBlob, LongText, Json

HakJun·2022년 2월 19일
1

Database

목록 보기
9/16

Longtext, Longblob type에 데이터를 저장하고, 지정한 경로에 해당 타입의 파일을 옮겨 보는 작업을 하였다.

테이블을 생성하고

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;

longtext,longblob타입의 텍스트를 가진 삽입 코드를 실행해보면

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

파일 및 스크립트가 삽입되지 않은 것을 확인할 수 있다. 그 이유는
longtext의 최대 설정길이, max_allowed_packet이 적게 설정되어있는것
secure에 파일 로드 경로를 추가해줘야하기 때문이다.


my.ini파일에서 크기를 1024m로 설정해주고(관리자 권한으로 실행)

secure-file-priv에도 로드할 파일경로를 추가해 주면,

longtext와 longblob이 정상적으로 들어간 것을 확인할 수 있다.

특정 폴더로 대용량 스크립트,영상 추출해보기

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

SELECT movie_film FROM movietbl  WHERE movie_id=3 
	INTO DUMPFILE 'C:/SQL/Movies/Mohican_out.mp4';

스크립트를 추출 할 때에는 OUTFILE"추출할 폴더" 를 설정해주고, BLOB인 영상을 추출할 때에는 DUMPFILE"추출폴더"를 지정해주면 성공적으로 파일을 추출할 수 있다.

Json
현대 웹과 모바일 응용 프로그램 등과 데이터를 교환하기 위한 개방형 표준 포맷이다.

MySql에도 Json과 관련된 다양한 내장함수를 제공한다.

JSON_VALID
문자열이 JSON형식을 만족하면 1, 그렇지 않으면 0을 반환한다.

JSON_SEARCH(데이터)
파라미터의 주어진 조건의 위치 추출한다.

JSON_EXTRACT(위치)
파라미터의 주어진 위치의 데이터를 추출한다.

JSON_INSERT(위치)
해당 위치에 주어진 데이터를 추가한다.

JSON_REPLACE(위치, 값)
해당위치에 주어진 값으로 데이터를 교체한다.

JSON_REMOVE(위치)
해당 위치의 데이터를 제거한다.

profile
백엔드 & 전공 공부

0개의 댓글