테이블을 생성하고
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(위치)
해당 위치의 데이터를 제거한다.