3.5. Batch 모드에서 mysql 사용하기
앞의 섹션에서, 여러분은 mysql을 사용해서 쿼리를 입력하고 그 결과를 볼 수가 있었다. 여러분은 mysql을 배치 모드에서도 사용할 수 있다. 이렇게 사용하기 위해서는, 명령어를 구동시키고 싶은 파일 안에 기록해 놓은 다음에, mysql이 이 파일에서 입력 값을 읽어 오도록 명령하면 된다:
shell> mysql < batch-file
윈도우 환경에서 mysql를 구동시킬 때 파일 안에 문제를 일으키는 특수 문자가 있는 경우에는, 아래의 것을 실행한다:
C:\> mysql -e "source batch-file"
명령어 라인에서 연결 파라미터를 지정하고자 할 경우의 명령어는 다음과 같이 된다:
shell> mysql -h host -u user -p < batch-file
Enter password: ********
이런 방식으로mysql을 사용할 때에는, 스크립트 파일을 하나 만든 다음에 스크립트를 실행시킨다.
스크립트 안에 있는 명령어 중에 하나가 에러를 발생시킨다고 하더라도 스크립트를 계속 진행 시키고자 한다면, --force 명령어 라인 옵션을 사용해야 한다.
왜 스크립트를 사용해야 하는가? 여기에 몇 가지 이유가 있다:
· 하나의 쿼리를 반복적으로 사용하는 경우라면 (즉, 내일 또는 매주), 스크립트를 사용해서 매번 반복적으로 입력하는 것을 피할 수 있다.
· 이미 있는 유사한 스크립트 파일을 복사하고 편집해서 새로운 쿼리를 만들 수 있다.
· 배치 모드는 쿼리를 개발할 경우에 유용한데, 특히 다중 라인 명령어 또는 다중 명령어 시퀀스를 위한 것을 개발할 때 유용하다. 여러분이 실수를 한다고 하더라도, 모든 것을 다시 타이핑할 필요가 없다. 간단히 스크립트를 수정해서 에러를 바로 잡은 다음에, mysql이 이것을 다시 실행하도록 하면 된다.
- 대용량의 결과를 만들어 내는 쿼리를 가지고 있다면, 화면에 스크롤 되는 결과를 얻는 것보다는 종이에 출력을 얻는 것이 나을 것이다:
shell> mysql < batch-file | more
- 향후 진행을 위해 파일로 결과를 보낼 수도 있다:
shell> mysql < batch-file > mysql.out
· 여러분이 작성한 스크립트를 다른 사람에게 전달해서 그 사람들이 여러분과 동일한 명령어를 실행하도록 할 수 있다.
· 어떤 상황에서는 상호 교류 동작 (interactive)을 할 수 없는데, 예를 들면, 여러분이 cron 작업을 통해서 쿼리를 구동 시킬 경우에는 반드시 배치 모드를 사용해야 한다.
디폴트 결과 포맷은 배치 모드에서 mysql을 사용할 때와 상호 교류 동작을 사용할 때가 다르게 나타난다. 예를 들면, SELECT DISTINCT species FROM pet은 mysql이 상호 교류적으로 구동할 때 다음과 같이 나온다:
+---------+
| species |
+---------+
| bird |
| cat |
| dog |
| hamster |
| snake |
+---------+
하지만 배치 모드에서는 다음과 같이 결과가 나온다:
species
bird
cat
dog
hamster
snake
만약에 배치 모드에서 상호 교류적인 결과값 포맷을 얻고자 한다면, mysql –t를 사용한다. 실행된 명령문에 결과 값을 다시 돌려 보내고 싶다면 mysql –vvv를 사용한다.
또한, source 또는 \. 명령어를 사용해서 mysql 프롬프트상에서 스크립트를 사용할 수도 있다:
mysql> source filename;
mysql> \. filename