- 締切済み
バッチ処理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プログラムは 別プロジェクトで作成したほうがよろしいのでしょうか? 長々とすみません。 どなたか教えていただけませんでしょうか? よろしく御願いいたします。
- みんなの回答 (4)
- 専門家の回答
みんなの回答
- chomakichi
- ベストアンサー率57% (22/38)
返信が遅くなって申し訳御座いません。 JDBCドライバを使ってmdbファイルから読み込むっていうイメージかなって思います。ですので、Javaプログラムからmdbファイルが参照できないと駄目でないかと思います。 JDBC-ODBCのtype2ドライバでもどっかのWindows上で動かし、ネットワーク越しにORACLEを更新する方法もあります。 参考URLはこの場合の参考です。 あと、最初のご質問の構想を実現するのであれば、kztk様の#1のご回答がズバリ!だと思います。(同じくJavaでAccessを扱うところに疑問が残りますが。。。)
- kztk
- ベストアンサー率53% (59/110)
なるほど。 ではfedora上で使えるMDBへのJDBCドライバが入手可能、という前提なら、お考えになった方法は実現可能と思います。 ただ、その場合#2の回答者さんが仰るとおり、CSVファイルにする必要はないですね。 JDBCで、MDBから取得したデータをつかって、同じくJDBCでOracleに更新をかければよいと思います。 ですから、データ加工用のjavaプログラムとデータ更新用のjavaプログラムは分けませんね。
- chomakichi
- ベストアンサー率57% (22/38)
AccessもDBなんですから、JavaでAccessに接続するのは駄目ですか? (JDBCのType4ドライバもあるにはあるようですね。) そうすればわざわざファイル出力する手間も無いと思いますが。
補足
ご解答ありがとうございます!!!!!!!! <AccessもDBなんですから、JavaでAccessに接続するのは駄目ですか? サーバー(Fedora)から直接、FTPにアクセスしてデータを取得するということでしょうか? それとも、サーバー上にいちどAccessを取得してきてから,JavaでAccessに接続するということでしょうか? すみませんあまり学識がないもので…
- kztk
- ベストアンサー率53% (59/110)
>(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の出番が全くないですし、情報がもう少しないとなんともいえないですね。
補足
お返事ありがとうございます。丁寧な解答ありがとうございます。 すみません!!判りづらくって!! 現在、Accessで運用しているシステムがあり、新たにWeb上でAccessで管理しているデータの閲覧を行いたいというのが今回の要望です。 FTPとアプリケーションサーバーは別サーバーを想定しています。 <(1)Accessから日々の差分情報をCSVにエクスポート・圧縮し、FTPサーバへアップロード(VBAで実装) 一番困っている部分が、この部分です。今回、Accessの機能変更は行わず あくまでAccessのデータを新システムの機能を使って取り込まなければ ならないからです。(CSV出力等はAccessでは行わないことを想定) そのため、Accessを手動でFTPにアップロードしてからの作業が前提に なります。 よろしくお願いします!!!!!!!!!
お礼
ご親切にありがとうございました。