MySQL은 배치(batch) 모드로 실행할 수 있습니다. 배치 모드란 실행하고자 하는 SQL 문장들을 하나의 파일에 미리 작성해 두고, mysql 클라이언트가 해당 파일을 읽어 들여 순차적으로 처리하도록 하는 방식입니다.
배치 모드 기본 사용법
실행할 문장들을 파일에 저장한 뒤, 다음과 같이 mysql에게 입력을 해당 파일에서 읽도록 지시하면 됩니다.
shell> mysql < batch-file
Windows 환경에서의 주의 사항
Windows에서 mysql을 실행하는 경우, 파일에 포함된 특수 문자로 인해 문제가 발생할 수 있습니다. 이럴 때는 아래와 같이 실행하면 됩니다.
C:\> mysql -e "source batch-file"
접속 파라미터 지정하기
명령줄에서 접속 정보(호스트, 사용자 등)를 함께 지정해야 한다면 다음과 같이 실행합니다.
shell> mysql -h host -u user -p < batch-file Enter password: ********
이렇게 실행하면 SQL 문장들이 담긴 스크립트 파일이 만들어지고, 이후 이 파일이 그대로 실행됩니다.
스크립트를 사용하는 이유
반복 작업의 효율화: 동일한 쿼리를 자주 실행해야 할 경우, 매번 코드를 다시 입력하는 대신 스크립트만 재실행하면 됩니다.
오류 발생 시에도 계속 진행: 일부 문장에서 오류가 발생하더라도 나머지 문장까지 계속 실행하려면 명령줄 옵션으로
--force를 사용합니다.쿼리 재활용: 서로 비슷한 새로운 쿼리가 필요할 때, 기존 스크립트 파일을 복사한 뒤 일부만 수정하여 손쉽게 생성할 수 있습니다.
개발 과정에서 유용: 여러 줄로 구성된 문장이나 여러 개의 문장으로 이루어진 시퀀스를 개발할 때 특히 유용합니다. 오류가 발생해도 전체 코드를 다시 입력할 필요 없이, 스크립트에서 해당 부분만 수정한 후 mysql에게 스크립트 파일을 다시 실행하도록 지시하면 됩니다.
대량 출력 결과 다루기
쿼리 결과가 너무 많아 화면 상단으로 빠르게 지나가 버리는 경우, 출력을 페이저(pager)로 전달하면 한 페이지씩 확인할 수 있습니다.
shell> mysql < batch-file | more
또는 출력 결과를 파일로 저장해 두고, 이후 별도로 가공하거나 분석하는 것도 가능합니다.
shell> mysql < batch-file > mysql.out
스크립트 공유
작성된 스크립트 파일은 다른 사람들과 공유하거나 배포할 수 있으므로, 팀 단위로 동일한 SQL 작업을 반복 수행해야 하는 상황에서도 배치 모드는 매우 실용적인 선택입니다.