• 締切済み

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

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

  • MySQL
  • 回答数2
  • ありがとう数1

みんなの回答

  • 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 構成です。

関連するQ&A

  • Oracleストアドプロシージャについて

    現在、夜間バッチで海外FTPサーバーからCSVファイルをDWHサーバーに格納後、 同DWHサーバー内のOracleテーブルにInsertするという処理の開発をしているのですが、 CSVの取得はDOSバッチとTeratermのマクロで取得しようと思っています。 しかし、CSVファイルのInsert処理はPL/SQLで開発を行おうと考えています。 それは、Insert後にそのテーブルと別サーバーのOracleテーブルを使用してデータの加工を行い、 その結果をDWHテーブルにロードしなければいけないからです。 ちなみに、今まではVBしか触ったことしかなくPL/SQLやバッチの作成はは初めてです。 そこで質問なのですが、PL/SQLで他のサーバーのテーブルとリレーションは出来るのでしょうか? (VBAでは1つのサーバーにしか同時接続できなかったため) またその場合のフローチャートのイメージが出来ないのですが、箇条書き程度で結構ですので教えていただけないでしょうか?(どこでストアドプロシージャに処理が移行するのかなど....) 長い文章でわかりにくいと思いますが、識者の方がいれば教えていただければ幸いです。

  • ストアドプロシージャーをWindowsバッチジョブで実行させたい

    SQLServerでストアドプロシージャーを作成し、これをWindowsのバッチジョブで実行させたいのですが、どのようにバッチジョブを作成すればいいのでしょうか? ストアドは単純にdbのdeleteを定義したものです。 バッチにはSQLServerのログインも必要だと思われるので、その辺から教えてください。

  • ストアドプロシージャのファイルサイズの調べ方

    お世話になります。 オラクルに登録したストアドプロシージャのファイルサイズを調べる手段についてお聞きしたいと思います。 クライアントでテキストファイルに落すこと無く、サーバーで登録してあるプロシージャのファイルサイズを一覧で取得するようなバッチ処理を考えています。 プロシージャのファイルサイズを取得できるのか、よく分からないのですが、ご存知の方、お知らせください。 サーバー環境 windowsNT oracle8

  • ストアド・プロシージャをバッチから起動させて実行する方法

    使用DBはOracle9iです。 あるストアド・プロシージャがOracleデータベースに保存されているのですが、 これをバッチから起動させて実行するには、どのようにバッチ内容を記述すればよろしいでしょうか?

  • ストアドプロシージャについて

    教えてください。 NT4.0上でAccess2000+MSDEで使用しているのです。 ストアドプロシージャでUPDATE文のあとにSELECT文を使い更新したデータを受け取ろうとしているのですが、実行すると「ストアドプロシージャは実行されましたがレコードは返されませんでした。」とメッセージが表示されるだけなのです。UPDATE文を注釈にするとレコードは返されるのでデータはあるのだと思います。 宜しくお願いします。

  • ストアドプロシージャについて

    Access2003とSQL Server2005Expressです。 初歩的な質問で恐縮です。 以下のストアドプロシージャのデータ取得先を、テーブルではなく 別のストアドプロシージャにしたいのですが、 その方法がわかりません。 CREATE PROCEDURE テスト AS SELECT コード, 社名, 住所, 電話 FROM 名簿     ↑     これをテーブルではなく、別のストアドプロシージャを     指定したのですが・・・。     ここをストアドプロシージャ名にするとエラーになります。     どうすればよろしいでしょうか?

  • MYSQLでストアドプロシージャの引数を二つ

    MYSQL初心者で参考書にかじりついてプログラミングしています。 主にDBの内容をPHPで吐き出させるといった使い方をしています。 SQL文があまりにも長ったらしくなってきたのでストアドプロシージャを使いたいのですが、使っているSQL文が (SELECT * FROM .変数. WHERE .変数. LIKE '.変数.') UNION (SELECT * FROM .変数. WHERE .変数. LIKE '.変数.'); となっており、引数を複数使えないとスッキリさせられない状況です。 ストアドプロシージャで複数の引数を設定することはできないのでしょうか?

    • ベストアンサー
    • MySQL
  • ストアドプロシージャ

    こんにちは。 Javaにて、ストアドプロシージャを実装しなくてはならない要件が急遽発生しましたが、私にはそれに関連する知識が皆無で、戸惑っています。 参考になるURLなど、なんでもよいので、ご存知でしたらご教授ください。 Javaは、Java2、データベースは、DB2です。

  • ストアドプロシージャで別DBに接続

    Oracleのマテリアライズドビューのデータを SQL Server 2008のDBに毎晩取り込む処理を作る必要があり、方法を検討中です。 SQL Serverが稼働しているWindows Server 2003のマシンから、 毎晩タスクで起動させて実行することを考えています。 SQL Serverのストアドプロシージャで実現できないかと考えているのですが、 ストアドプロシージャだけで実現可能でしょうか? Oracleに接続してビューのデータを取得し、それに基づいて、 SQL ServerのDB内のテーブルのデータ追加、更新、削除等を行います。 単純なコピーではなく、データ加工や変換等の処理も行います。 経験がないので、実現可能かというところから教えて下さい。 実現不可能なら、他にどのような選択肢があるか教えていただけると助かります。 よろしくお願いします。

  • ストアドプロシージャでのファイル操作

    ストアドプロシージャでファイルの入出力は可能なのでしょうか? ストアドプロシージャでEXEやバッチファイルの呼び出しは可能でしょうか?また、制約などはあるのでしょうか? トリガのタイミングにbeforeがないのですが、代わりとなる方法は存在するのでしょうか? まだ、初心者なので非常に困ってます。 複数の質問なので一つずつでもいいので教えて頂けると助かります。 一応、自分でもサイトなどを検索しているのですが、わかりやすいサイトがなく苦しんでます。