Webサイト制作コースのお申し込みはこちら Webサイト制作コースのお申し込みはこちら

SQLデータベースの管理では、バックアップなどの定型処理や複数のSQLをまとめて実行する場合などで、バッチ処理を活用します。

データベースエンジニアの方なら、昔作られたようなSQLを実行するためのBATファイルを見たことがあるでしょう。今回は、バッチ処理の基本から、作り方などを詳しく解説します。

IT用語としてよく使われるバッチとは何か

インフラエンジニアは、よく「その処理はバッチで実行しましょう」と言ったりします。また、SQLデータベースを運用するうえで、情報システムに組み込んでいない特殊な処理に、バッチ処理を使うケースも珍しくありません。

まずは、SQLデータベースにおけるバッチ処理について解説します。

バッチは英語の「batch」が元になった言葉

IT用語としてよく耳にするバッチは、英語の「batch」が元になっています。なお、英語の「batch」は、一回分や一束、一群といった意味です。

つまり、個々のプログラムを1つ1つ個別に実行するのではなく、複数のプログラムをまとめて実行するのがバッチの語源です。

なお、コンピュータが使われ始めたころは、今のようなキーボードやディスプレイが無く、プログラムを実行するにも、その結果をチェックするのも大変な作業でした。

そのため、1つずつ実行するのではなく、複数のプログラムをまとめて実行されていました。これが、バッチ処理の最初です。

バッチ処理はすぐに結果が表示されない処理

昔のコンピュータは非常に高価だったことから、CPUを常に稼働させていました。

そして、そのための仕組みとして、実行予定の複数のプログラムを待機させておき、CPUが空いたら待機中のプログラムを実行する仕組みで運用されており、バッチ処理と呼ばれていました。

つまり、バッチ処理とは、昔はジョブを投入したとしても実行待ちに入ってしまい、すぐに結果が表示されないプログラムの実行を指す言葉でした。

そのため今でも、時間のかかる複数の処理をまとめて実行したり、指定した時刻に実行する処理をバッチ処理と呼んでいます。

SQLによるバッチ処理

SQLが使えるデータベース管理ソフトが組み込まれたWebシステムでは、利用者の操作によって実行されるSQLの他に、データの転送処理やバックアップなどの一括処理が実行されるのが一般的です。

そして、このような処理は、ある時刻に定期的に実行されることが多く、バッチ処理を呼ばれます。

また、そのようなバッチ処理は、深夜の時間帯に実行されることから、夜間バッチと呼ばれることもあります。

なお、このようなバッチによるSQLの実行は、Linuxのシェルスクリプトや、Windows ServerのBATファイルなどで、データベース管理ソフト専用のクライアントソフトでSQLを実行しています。

LinuxサーバーにおけるSQLデータベースのバッチ処理

バッチ処理は、SQLデータベースが稼働しているサーバー上で実行されることが多く、SQLデータベースはUbuntuやCentOSといったLinuxサーバーで稼働していることが多いことから、LinuxOS用のバッチ処理がよく使われます。

次から、LinuxOSで利用される、SQLデータベースで使われるバッチファイルについて解説します。

バックアップ処理

SQLデータベースのバッチ処理として、多くのシステムで利用されているのがバックアップです。

システムによっては、専用のバックアップアプリを活用しているケースもありますが、OS標準のコマンドと組み合わせてバックアップする仕組みを構築する方法もよく使われます。

なお、深夜にシステムを停止し、その間にバックアップする方法が確実ですが、24時間稼働しているWebシステム等は、システムを停止できません。

このようなケースでは、SQLデータベースを稼働した状態で、特定の時刻のデータのスナックショットを作成し、それをバックアップしています。

バックアップ処理用バッチファイルはスキル次第

SQLデータベースのバックアップ用のバッチファイルは、SQLサーバーが稼働しているサーバー、または、ネットワークを介してそのサーバーに接続できるサーバーから実行できます。

もし、レンタルサーバーでSQLデータベースを運用している場合は、そのサーバーでも設定でき、また、ネットワークを介して別のLinuxサーバーからも実行できます。

なお、linuxで利用されることの多いUbuntuやCentOSといったディストリビューションでは、シェルスクリプトや、Rubyのスクリプト、Python3のスクリプトなどでバッチファイルが作られています。

なお、システム管理者のプログラミングスキルに応じて、多機能なバッチファイルを作ることも可能です。

バックアップ処理用バッチファイルの例

次に、MySQLのデータベースをバックアップするために、シェルスクリプトで作成したバッチファイルの例を紹介します。

なお、このバッチファイルは、Linuxの機能であるcronを活用し、指定した時刻に実行します。

シェルスクリプトの例

#!/usr/bun/bash

USER_NAME="test"
PASSWORD="password"
BACKUP_DIR="/mnt/backup"
BACKUP_FILE="backup`date +%Y%m%d`.sql"
OLD_FILE="backup`date --date '1 day ago' "+%Y%m%d"`.sql"

/usr/bin/mysqldump -u$[USER_NAME] -p$[PASSWORD] --single-transaction -A > $[BACKUP_DIR]/$[BACKUP_FILE]

if [ $? != 0 ];then
  echo "エラーが発生しました"
else
  rm $[BACKUP_DIR]/$[OLD_FILE]
  echo "バックアップが終了しました"
fi

Windowsにおけるバッチ処理

先ほどSQLデータベースのサーバーとして使われるこの多いLinuxOSにおけるバッチファイルの例を紹介しましたが、Windowsでもバッチファイルが使われています。次から、Windowsにおけるバッチファイルについて解説します。

情報システムで提供できないデータを取得する処理

情報システムをリリースした後、データベースに格納されたデータを基に、特別なフォーマットでデータを取り出したい、といった要望がよくでます。

この場合、簡単に実現するにはどうすればよいでしょうか。昔から、よく使われている方法が、データベース管理ソフトのクライアントツールを使い、特別に作成したSQLを実行するケースです。

このようなケースでは、クライアントツールに読み込ませるSQLファイルと、実行するためのファイルとして、拡張子が.BATのファイルがバッチファイルとして提供されます。

そのため、このファイルを実行することを、よくバッチ処理と呼びます。

Windows Serevrでも使える

BATファイルを使ったバッチ処理は、SQLサーバーが動作しているWindows Serevrでも実行できます。

例えば、本番環境とテスト環境が構築されたWindows Serverでは、本番環境のデータをテスト環境にコピーするためバッチファイルが用意されるケースがあります。この場合、Windows用のBATファイルが使われます。

WindowsのBATファイルの例

Windowsの拡張子が.BATのファイルは、パソコンがオフィスで使われ始めたMS-DOS時代から使われているファイル形式です。

そして、このファイルに記述しておけば、複数のMS-DOSのコマンドを実行できます。

また、データベース管理ソフトのクライアントツールとして、Windowsのコマンドプロンプトで実行するコマンドが提供されることが多く、そのクライアントツールを実行するために、バッチファイルが使われます。

次に、WindowsバッチファイルでOracle database向けのSQLを実行する例を紹介します。まず、Oracle databaseのクライアントツールは、sqlplusです。インストールされていれば、コマンドプロンプトで利用できます。使い方とバッチファイルの例は次のとおりです。

splplusコマンドの基本

splplus ユーザー名/パスワード@接続文字列 SQLファイル名

BATファイルの例

@echo off
set USER_NAME=test
set PASSWORD=passwprd
set DATABASE=test
set SQL_FILE=test.sql

sqlplus -s %USER_NAME%/%PASSWORD%@%DATABASE% @%SQL_FILE%

まとめ

SQLデータベースは、専用のクライアントツールやGUI管理ツールから操作できます。

しかし、バックアップなどの定型処理や、複数のSQLをまとめて実行するケースでよく使われるのはバッチファイルです。そのため、データベースを扱うエンジニアなら、バッチファイルを作れるようになりましょう。

なお、SQLデータベース用のバッチファイルは、サーバーによって使えるプログラミング言語が違います。サーバーに応じたバッチファイルが作れるように、プログラミングスキルを身に付けてください。

エンジニアになりたい人に選ばれるプログラミングスクール「ポテパンキャンプ 」

ポテパンキャンプは卒業生の多くがWebエンジニアとして活躍している実践型プログラミングスクールです。 1000名以上が受講しており、その多くが上場企業、ベンチャー企業のWebエンジニアとして活躍しています。

基礎的な学習だけで満足せず、実際にプログラミングを覚えて実践で使えるレベルまで学習したいという方に人気です。 プログラミングを学習し実践で使うには様々な要素が必要です。

それがマルっと詰まっているポテパンキャンプでプログラミングを学習してみませんか?

卒業生の多くがWebエンジニアとして活躍

卒業生の多くがWeb企業で活躍しております。
実践的なカリキュラムをこなしているからこそ現場でも戦力となっております。
活躍する卒業生のインタビューもございますので是非御覧ください。

経験豊富なエンジニア陣が直接指導

実践的なカリキュラムと経験豊富なエンジニアが直接指導にあたります。
有名企業のエンジニアも多数在籍し品質高いWebアプリケーションを作れるようサポートします。

満足度高くコスパの高いプログラミングスクール「ポテパンキャンプ」

運営する株式会社ポテパンは10,000人以上のエンジニアのキャリアサポートを行ってきております。
そのノウハウを活かして実践的なカリキュラムを随時アップデートしております。

代表の宮崎もプログラミングを覚えサイトを作りポテパンを創業しました。
本気でプログラミングを身につけたいという方にコスパ良く受講していただきたいと思っておりますので、気になる方はぜひスクール詳細をのぞいてくださいませ。