728x90
MySQL 대용량 데이터 업로드
INSERT INTO movietbl
VALUES(1, '쉰들러 리스트', '스필버그', '리암 니슨',
LOAD_FILE('C:/SQL/movies/Schindler.txt'),
LOAD_FILE('C:/SQL/movies/Schindler.mp4'));
- LOAD_FILE(PATH) : 해당 경로의 파일을 업로드
문제 상황
LONGTEXT, LONGBLOB의 대용량 데이터 INSERT 시 NULL 값 발생
원인
** LONGTEXT, LONGBLOG의 MAX 값 조정 필요**
=> max_allowed_packetSHOW VARIABLES LIKE 'max_allowed_packet'
로 원래 값 확인 가능** LOAD_FILE(PATH) 사용시 해당 경로를 보안 폴더로 지정 필요**
=> secure-file-privSHOW VARIABLES LIKE 'secure-file-priv'
로 원래 값 확인 가능
해결 방안
- cmd를 관리자 모드로 실행
C:\ProgramData\MySQL\MySQL Server 8.0
로 이동- notepad my.ini로 파일을 열어서 두 설정 값을 수정
1. max_allowed_packet 조정
max_allowed_packet의 값을 파일이 들어갈만큼 큰 값으로 수정
2. secure-file-priv에 경로 추가
업로드하려는 파일이 있는 경로를 추가secure-file-priv="C:/ProgramData/MySQL/MySQL Server 8.0/Uploads"
아랫줄에secure-file-priv="경로"
를 추가.
이후 my.ini
를 저장하고 닫기
MySQL 재시작
cmd에서 NET STOP MySQL
을 입력해 MySQL을 종료
종료가 완료되면 NET START MySQL
을 입력해 MySQL을 재시작
이제 my.ini
에 설정한 내용이 MySQL에 적용된다.
MySQL 대용량 데이터 다운로드
- txt : OUTFILE
- mp4 : DUMPFILE
txt 파일
SELECT ~ INTO OUTFILE 'PATH'
명령어 사용
SELECT movie_script from movietbl where movie_id = 1
INTO OUTFILE 'C:/SQL/movies/Schindler_out.text'
LINES TERMINATED BY '\\n'; -- 필수
mp4 파일
SELECT ~ INTO DUMPFILE 'PATH'
명령어 사용
SELECT movie_film from movietbl where movie_id = 3
INTO DUMPFILE 'C:/SQL/movies/Mohican_out.mp4';
728x90
'MySQL' 카테고리의 다른 글
MySQL SQL 프로그래밍(스토어드 프로그램) (0) | 2024.11.05 |
---|---|
MySQL Pivot, JSON (0) | 2024.11.05 |
MySQL 명령어 정리 (5) - MySQL 내장함수 (0) | 2024.11.05 |
INSERT 중복키 문제 처리 (0) | 2024.11.05 |
MySQL 명령어 정리 (4) 시스템 변수, AUTO_INCREMENT, 형변환 (0) | 2024.11.05 |