• 締切済み

バッチ処理hhhhについて

お世話になります。自動バッチについて質問があります。 Accessからオラクルへのデータ移行を自動バッチ(日時)で行おうと 考えています。 環境: アプリケーションサーバー:apach tomcat 言語:java1.6 サーバー:fedoracore8 取得先DB:Access 入力先DB:oracle11g IDE:eclipse3.3 自分で考えた方法としては、 ----------ここまでは手動------------------- (1)手動でFTPに圧縮したAccessをアップロード ----------ここから自動バッチ------------------- (2)夜間、サーバー上にFTPからAccessを取得(自動) crontabとか? (3)取得したAccessを解凍し、全データの中から更新データのデータをjavaプログラムで取得・加工→csv出力 (3)出力したcsvをjavaプログラムで参照し、oracleに更新する。 ※補足 Accessのデータは毎日更新されます。毎日、前回更新からの差分を javaプログラムで取得、加工しOracleに更新します。 …といった感じでプログラムを作成できないかなっと思っています。 ただ、上記の方法が可能なのかどうかが自分自身判断できかねています。 インターネットで調べて、javaからAccessのデータを取得できるのは 分かったのですが、それ以外の部分が実際に可能なのかどうかの判断 がつきません。 また、データ加工用のjavaプログラムとデータ更新用のjavaプログラムは 別プロジェクトで作成したほうがよろしいのでしょうか? 長々とすみません。 どなたか教えていただけませんでしょうか? よろしく御願いいたします。

  • Java
  • 回答数4
  • ありがとう数3

みんなの回答

回答No.4

返信が遅くなって申し訳御座いません。 JDBCドライバを使ってmdbファイルから読み込むっていうイメージかなって思います。ですので、Javaプログラムからmdbファイルが参照できないと駄目でないかと思います。 JDBC-ODBCのtype2ドライバでもどっかのWindows上で動かし、ネットワーク越しにORACLEを更新する方法もあります。 参考URLはこの場合の参考です。 あと、最初のご質問の構想を実現するのであれば、kztk様の#1のご回答がズバリ!だと思います。(同じくJavaでAccessを扱うところに疑問が残りますが。。。)

参考URL:
http://www.hellohiro.com/jdbc.htm
tiyoji
質問者

お礼

ご親切にありがとうございました。

  • kztk
  • ベストアンサー率53% (59/110)
回答No.3

なるほど。 ではfedora上で使えるMDBへのJDBCドライバが入手可能、という前提なら、お考えになった方法は実現可能と思います。 ただ、その場合#2の回答者さんが仰るとおり、CSVファイルにする必要はないですね。 JDBCで、MDBから取得したデータをつかって、同じくJDBCでOracleに更新をかければよいと思います。 ですから、データ加工用のjavaプログラムとデータ更新用のjavaプログラムは分けませんね。

回答No.2

AccessもDBなんですから、JavaでAccessに接続するのは駄目ですか? (JDBCのType4ドライバもあるにはあるようですね。) そうすればわざわざファイル出力する手間も無いと思いますが。

参考URL:
http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=37044&forum=12&6
tiyoji
質問者

補足

ご解答ありがとうございます!!!!!!!! <AccessもDBなんですから、JavaでAccessに接続するのは駄目ですか? サーバー(Fedora)から直接、FTPにアクセスしてデータを取得するということでしょうか? それとも、サーバー上にいちどAccessを取得してきてから,JavaでAccessに接続するということでしょうか? すみませんあまり学識がないもので…

  • kztk
  • ベストアンサー率53% (59/110)
回答No.1

>(1)手動でFTPに圧縮したAccessをアップロード >(2)夜間、サーバー上にFTPからAccessを取得(自動) 「FTPに圧縮」「サーバー上にFTPから」の意味が分かりません。fedoraのサーバー上にFTPデーモンとアプリケーションサーバ(tomcat)が動いているわけではなく、FTPとtomcatは別のサーバで動いているということですか?つまり: (1)手動で圧縮したMDBファイルをFTPサーバにアップロード (2)夜間、アプリケーションサーバー上にFTPサーバからMDBファイルを取得(自動) ということ? とりあえず、そうだと仮定して話しを進めますが、 >インターネットで調べて、javaからAccessのデータを取得できるのは >分かったのですが、それ以外の部分が実際に可能なのかどうかの判断 >がつきません。 私の理解では、言語がJavaでもfedoraのサーバ上でAccess(MDBですよね?)を処理できるとは思えないのですが・・・。逆に、それさえ出来るのならば、お考えになった手順のそれ以外の部分は十分実現可能と思います。 要件が分からないのでなんともいえませんが、完全自動化する必要がなく、MDBファイルを手動で圧縮する運用が許されるなら、バッチ処理を作る必要性もないような気がしますが・・・ ----------ここまでは手動------------------- (1)Accessから日々の差分情報をCSVにエクスポート・圧縮し、FTPサーバへアップロード(VBAで実装) ----------ここから自動バッチ(シェルスクリプトで十分)---------- (2)夜間、アプリケーションサーバー上にFTPサーバからcsvを取得(自動) (3)取得したcsvを解凍しsql loaderでOracleへ取り込み とか? いや、もっとすっきり出来るような気が・・・。 質問者さんが考えている方法でもtomcatの出番が全くないですし、情報がもう少しないとなんともいえないですね。

tiyoji
質問者

補足

お返事ありがとうございます。丁寧な解答ありがとうございます。 すみません!!判りづらくって!! 現在、Accessで運用しているシステムがあり、新たにWeb上でAccessで管理しているデータの閲覧を行いたいというのが今回の要望です。 FTPとアプリケーションサーバーは別サーバーを想定しています。 <(1)Accessから日々の差分情報をCSVにエクスポート・圧縮し、FTPサーバへアップロード(VBAで実装) 一番困っている部分が、この部分です。今回、Accessの機能変更は行わず あくまでAccessのデータを新システムの機能を使って取り込まなければ ならないからです。(CSV出力等はAccessでは行わないことを想定) そのため、Accessを手動でFTPにアップロードしてからの作業が前提に なります。 よろしくお願いします!!!!!!!!!

関連するQ&A

  • コマンドプロンプトのバッチについて

    WindowsのDOSなどのコマンド処理をするバッチファイルについて ですが、DOSからDB(OracleやSQL Serverなど)を起動させるバッチがあって、DBに入ってからSQLのコマンドなどを自動でさせるバッチって 何か方法はないのでしょうか?? DOS → DB起動後、自動でコマンドで動かしたいです。 細かくいうとWindowsのDOSではなくなるので、 動かなくなると思います。

  • AccessとOracleのデータ連携について

    お世話になります。 AccessのデータとOracleのデータ連携について悩んでいます。 Javaのアプリケーションを通して、AccessのデータをOracleに 取り込むシステムを作成しようとしています。 自分で考えた方法としては、 【実装方法1】 出力時 : Accessに【csv出力メニュー】を作成する。データ出力担当者      は、【csv出力メニュー】からFTPにデータの出力を行う。   データ出力時に、企業型DBから通知メールが入力担当者に自 動で送信される。 入力時 : データ入力担当者はメールを受け取り次第、Javaシステ ムのデータ取り込み機能を利用して、FTPから入力対象       データの取り込みJavaシステムを利用して行う。 …です。 ただ、この場合Accessにcsvデータ出力機能を新たに作成しなければなりません。仮にAccessからcsvデータを出力できないといった場合に、 AccessのテーブルをJavaプログラムから直接参照してOracleにデータ登録することは可能なのでしょうか? 若輩者の為、仕様を考えることは初めての経験なのでどなたかご教授いただけませんか?よろしく御願いいたします。

  • バッチ処理でftpから自動的にダウンロード

    バッチ初心者です。 バッチを使用してLAN内のftpサーバーからcsvを別のマシンのフォルダへ定期的(10分毎)にダウンロードするようにしたいのです。 テキストファイル(ファイル名ftpcmd.text)に以下のように記述しました。 open 「ftpサーバーのIPアドレス」 「ユーザー名」 「パス」 mget*.csv quit バッチファイル(auto_ftp.bat)に以下のように記述しました。 ftp -i-s:ftpcmd.txt ダウンロード先の指定と10分毎に実行させるにはどのようにすればいいですか? 宜しくお願いします。

  • バッチを走らせてそのバッチを削除したい

    ある特定の日にバッチでサービスをスタートアップを自動から手動に切り替えたいと思います。 バッチを作ってWindowsタスクスケジューラで特定の日にバッチを読み取り手動にしようと 考えています。やりたい事は、そのバッチが走った後に自動で削除したいと思います。 1回切りプログラムを走らせて、そのプログラムを即破棄というようにやりたいのですが、 方法がわかりません。何か良いアイディアはないでしょうか?

  • エクセルVBAで、バッチ処理を起動すると・・・

    Windows/XP/pro、エクセル2002 使用です。 c:\autocsvフォルダーに、MS-DOSコマンドを使ってFTPを自動実行しサーバーからCSVを自動的に取得する.TXTファイルと、バッチファイルの.batファイルをおいています。 参考URL http://www.ponko2.com/ftp_bat.html この.batファイルをVBAから呼び出して実行させるように下記のコードを記述ましたが、ファイルは起動するものの、CSVファイルを取得(またはLogin)できません。Openメソッドを使ってもうまくいきませんでした。実行する関数の間違いと思っていますが、それとも、VBAからバッチファイルを実行する場合の何か決まりごと等があるのでしょうか? Sub test() Dim str As Variant str = Shell("c:\autocsv\auto.bat", vbNormalFocus) Application.Wait Now + TimeValue("00:00:10") End Sub (VBAの実行をステップインを使って1行ずつ実行してもファイルを取得できません) なお、.batファイルを単独で起動させた場合は、問題なくcsvファイルの取得はできています。 お手数ですが、ご指導いただけますようお願いします。

  • PHPからAccess起動。

    PHPからAccess起動。 PHPのバッチプログラムから Accessのmdbを起動する方法が、わからず悩んでいます。 やりたい事は  (1) web画面のボタンをクリックしたら、PHPのバッチを起動し    データの取得・更新を行い、オラクルDBに保存する。  (2) Accessを起動し、オラクルDBに保持したデータを参照し    レポートの出力を行う。  (3) 終了メッセージを出力し、コントロールを画面に戻す。 以上です。 この内(1)と(3)に関しては自力で実装が完了しています。 わからないのが(2)の部分で PHPのバッチからAccessを起動しAccessのマクロをキックする方法です。 ご存知の方、ご教授お願い致します。

    • 締切済み
    • PHP
  • DBとバッチ処理、オンライン処理の関係について

    DBの登録や更新や削除をする際に利用するバッチ処理とオンライン処理の使い分けについてについて、お聞きしたいです。 バッチ処理は決められた時間に起動する処理だと認識しています。オンライン処理は求められたらその場でする処理だと認識しています。もしDBに登録や更新、削除する情報がある場合は、なるべくオンライン処理では行わないほうがいいのですか? もしその場合、対象のデータはファイルや更新用のDBなどを用意して一時的に保存しておいてバッチ処理にて行うということでしょうか?

  • バッチファイルで、データベースにデータのインサートは可能?

    みなさんこんにちは 今バッチファイルを作成しております。 私としては、こんなバッチファイルを組みたいと思っています。 ■あるデータ(CSVやエクセル形式)のファイルを、データベース(MSアクセスやオラクル)にインサートする。 バッチファイルで、このような事が実現可能なのか?と 言う疑問と、やり方はどのようにすればよいのか?です。 もし参考になるサイトなどありましたら、教えてください。 探したのですが、見つからなかったので・・・・ よろしくお願いします。

  • FTPのバッチファイル

    ローカルPCからサーバーのPCへ毎日決まったファイルをFTPで伝送したいと思っています。今はFFFTPで、毎日手動でファイルをアップロードしていますが、DOS窓からFTP接続するコマンドをバッチファイルにすることってできないのでしょうか? できれば、そのバッチファイルをタスクスケジューラーに登録して日々自動でアップロードしたいと考えています。 ftp open 接続先 ユーザーID パスワード put ファイル名 といった内容をバッチファイルにしたいのですが、やり方をご存知の方がいらっしゃいましたら、教えていただけないでしょうか?

  • DBサーバー(A)とDBサーバー(B)を双方向のバッチ処理で更新させよ

    DBサーバー(A)とDBサーバー(B)を双方向のバッチ処理で更新させようと思っています。 ですが、そもそもAのDBからBのDBにデータを送るにはどうしたら良いかがわかりません。 httpプロトコルでバッチ処理をやることになっているのですが、 サーバーが違うしWEB SessionやHTTP リクエストを受け取れるのだろうか? そもそも大量のデータを一括で遅れるのだろうかと疑問があります。 HTTPリクエストだと「アドレス?パラメータ」の形でデータを送信して 受けとるというのがスタンダードなやり方ですが、大量のデータは難しいと思ってしまいます。 こういった形でデータ授受を行う場合、 ロジック的にはどういうふうになるのでしょうか。 またhttpプロトコルで大量のデータを送るにはどうすれば良いのでしょうか。

    • ベストアンサー
    • Java

専門家に質問してみよう