• 締切済み

ストアドプロシージャーでバッチ処理

MySQL のストアドプロシージャーをつかって バッチ処理を作ろうとしています。 windows のスケジューラーを利用して、ファイルより定期的に処理したいと思っています。 LOAD DATA 文でファイルよりデータを取得し、DBへインサートはできるのですが、ストアドプロシージャーはバッチとして起動させることはできるのかご教授ねがいます。 その他、良い方法があれば、ご教授ねがいます。 環境は  MySQL 5.x os Windows2003です。

みんなの回答

  • onosuke
  • ベストアンサー率67% (310/456)
回答No.2

方法はいろいろありますが、とりあえず2つ。 1.Windowsのバッチファイル(*.bat)を利用する方法   ⇒mysqlコマンドを利用する。   ⇒実際の処理内容はSQLファイルを別に作成する。   例:mysql.exe -u username -p passwd db_name < sql_file_name   ⇒Windowsバッチ特有のエラー処理等を習得するのが面倒かも。 2.CLI版のPHPコマンドを利用する方法。   ⇒「CLI版のPHPコマンド(php.exe)」を利用すれば、    PHPをバッチのコマンドシェルとすることができます。  (逆に、ApacheModule版のPHPをバッチ処理に使うのは変)   ⇒CLI版のPHPコマンドについて:詳細は参考URL。   ⇒PHPで開発言語の統一が可能です。

参考URL:
http://itpro.nikkeibp.co.jp/article/COLUMN/20080205/292933/
回答No.1

>ストアドプロシージャーはバッチとして起動させることはできるのか 何をやりたいのか、具体的に説明してください。 MySQLのストアドプロシジャは、標準SQL準拠であり、SQLの「CALL文」で呼び出し実行します。バッチファイル中でMySQLに接続し、CALL文を実行するようにすれば、ストアドプロシジャを呼び出し実行することになります。

is_rive
質問者

お礼

JavaのバッチをMS-DOSからキックし、ストアドを呼び出すことにしました。 ありがとうございます。

is_rive
質問者

補足

ありがとうございます。 ストアドプロシージャー自体はcronやwindows のスケジューラーでは呼び出せないのですね。。。 やりたいことは、バッチ処理でCSVファイルを取り込み、 MySQLのデータベースに取り込みたいとおもっています。 バッチをなにで記述してよいのか迷うところです。 PHPですとApacheモジュールとなり、タイムアウトを起こしてしまうようですし。一般的に推奨できる言語は何でしょうか。。。 ちなみに環境は Windows2003 Apache2.x MySQL5.x PHP5.x 構成です。