- 締切済み
ストアドプロシージャーでバッチ処理
MySQL のストアドプロシージャーをつかって バッチ処理を作ろうとしています。 windows のスケジューラーを利用して、ファイルより定期的に処理したいと思っています。 LOAD DATA 文でファイルよりデータを取得し、DBへインサートはできるのですが、ストアドプロシージャーはバッチとして起動させることはできるのかご教授ねがいます。 その他、良い方法があれば、ご教授ねがいます。 環境は MySQL 5.x os Windows2003です。
- みんなの回答 (2)
- 専門家の回答
みんなの回答
- onosuke
- ベストアンサー率67% (310/456)
方法はいろいろありますが、とりあえず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で開発言語の統一が可能です。
- chukenkenkou
- ベストアンサー率43% (833/1926)
>ストアドプロシージャーはバッチとして起動させることはできるのか 何をやりたいのか、具体的に説明してください。 MySQLのストアドプロシジャは、標準SQL準拠であり、SQLの「CALL文」で呼び出し実行します。バッチファイル中でMySQLに接続し、CALL文を実行するようにすれば、ストアドプロシジャを呼び出し実行することになります。
お礼
JavaのバッチをMS-DOSからキックし、ストアドを呼び出すことにしました。 ありがとうございます。
補足
ありがとうございます。 ストアドプロシージャー自体はcronやwindows のスケジューラーでは呼び出せないのですね。。。 やりたいことは、バッチ処理でCSVファイルを取り込み、 MySQLのデータベースに取り込みたいとおもっています。 バッチをなにで記述してよいのか迷うところです。 PHPですとApacheモジュールとなり、タイムアウトを起こしてしまうようですし。一般的に推奨できる言語は何でしょうか。。。 ちなみに環境は Windows2003 Apache2.x MySQL5.x PHP5.x 構成です。