다운로드
소프트웨어 개발
계정
다운로드
소프트웨어 개발
Login
Forgot Account/Password
계정 만들기
언어
도움
언어
도움
×
Login
Login Name
Password
×
Forgot Account/Password
Translation Status of 한국말
Category:
Software
People
PersonalForge
Magazine
Wiki
검색
OSDN
>
브라 우즈 소프트웨어
>
System
>
TERASOLUNA Framework
>
포럼
>
Open Discussion
>
TERASOLUNA Batchを利用したファイル入出力の実現方法について
TERASOLUNA Framework
Description
Project Summary
Developer Dashboard
웹 페이지
Developers
Image Gallery
List of RSS Feeds
Activity
Statistics
History
다운로드
List of Releases
Stats
소스 코드
Code Repository list
Subversion
View Repository
티켓
Ticket List
Milestone List
Type List
Component List
List of frequently used tickets/RSS
Submit New Ticket
Documents
Wiki
FrontPage
Title index
Recent changes
Doc Mgr
List Docs
Communication
포럼
List of Forums
Open Discussion (1277)
Mailing Lists
list of ML
terasoluna-information
News
포럼:
Open Discussion
(Thread #37055)
Return to Thread list
RSS
TERASOLUNA Batchを利用したファイル入出力の実現方法について (2015-08-13 20:39 by
TERASOLUNAの入門者
#76733)
Reply
Create ticket
お世話になります。
TERASOLUNA Batchを利用して以下のような
処理を実現したいと考えておりますが実現
は可能でしょうか。
1.ファイルA、ファイルBを読み込む
2.読み込んだファイルAの情報を元にファイルBを更新する
3.2で更新したファイルBを出力する。
複数ファイルを持回る方法、また入力したファイルに
対して出力を行う方法が分からず苦慮しております。
実現方法をご存じのかたがいらっしゃいましたら
ご教示お願い致します。
何卒、宜しくお願い致します。
Reply to #76733
×
Subject
Body
Reply To Message #76733 > お世話になります。 > > TERASOLUNA Batchを利用して以下のような > 処理を実現したいと考えておりますが実現 > は可能でしょうか。 > > 1.ファイルA、ファイルBを読み込む > 2.読み込んだファイルAの情報を元にファイルBを更新する > 3.2で更新したファイルBを出力する。 > > 複数ファイルを持回る方法、また入力したファイルに > 対して出力を行う方法が分からず苦慮しております。 > > 実現方法をご存じのかたがいらっしゃいましたら > ご教示お願い致します。 > > 何卒、宜しくお願い致します。
You can not use Wiki syntax
You are not logged in. To discriminate your posts from the rest, you need to pick a nickname. (The uniqueness of nickname is not reserved. It is possible that someone else could use the exactly same nickname. If you want assurance of your identity, you are recommended to login before posting.)
Login
Nickname
Preview
Post
Cancel
Re: TERASOLUNA Batchを利用したファイル入出力の実現方法について (2015-08-18 18:09 by
tajirim
#76761)
Reply
Create ticket
[メッセージ #76733 への返信]
> 1.ファイルA、ファイルBを読み込む
> 2.読み込んだファイルAの情報を元にファイルBを更新する
> 3.2で更新したファイルBを出力する。
> 複数ファイルを持回る方法、また入力したファイルに
> 対して出力を行う方法が分からず苦慮しております。
ファイルBのフォーマットやエラー時のリカバリ方法にもよりますが、
方法は大きく2通りあります。
※Batch3を前提として回答しています。
<方法A: ファイルBをDBに取り込み、更新後、ファイルに出力する>
1. 前処理として、ファイルBをDBに取り込む。
2. 主処理として、ファイルAのレコードごとに、DBを更新する。
(コレクタでファイルAを開いて、レコード数分実行されるところでDBを更新する)
3. ファイルAのレコードが無くなったら、後処理として、DBで更新済みの情報をファイルBに出力する。
<方法B: ファイルBをランダムアクセスで直接更新する>
前提条件:
・ファイルBは固定長フォーマットである。
・ジョブが途中で異常終了した場合、ファイルBが中途半端に更新された状態であってもよい。
1. 前処理として、java.io.RandomAccessFileを用いて、ファイルBを読み書きモードで開き、
一旦最初から最後まで読み、レコードを特定するための主キーの値と、
ファイル上の位置(RandomAccessFile#seekに渡すlong値)を対応づけて、
HashMap等に保持しておく。
(ファイルAのレコードを処理するたびにファイルBの更新位置を探していると、
無駄に時間がかかってしまうため、
主キーの値とファイルB内のレコードの先頭位置をマッピングしておき、
レコードの先頭位置+定数で、更新位置が決定できるようにする。)
2. 主処理として、ファイルAのレコードごとに、ファイルBを更新する。
(前処理でファイルBを開いたRandomAccessFileを利用する。)
3. ファイルAのレコードが無くなったら、後処理として、ファイルBを開いたRandomAccessFileをcloseする。
※「前処理」はコレクタのループより上、
「主処理」はコレクタのループ内、
「後処理」はコレクタのループより下に配置する処理を意図しています。
方法Bは、文字通り、ファイルBを入力かつ出力ファイルにする方法で、DBは不要なのですが、
方法Aの方が汎用的です。
Reply to
#76733
Reply to #76761
×
Subject
Body
Reply To Message #76761 > [メッセージ #76733 への返信] > > 1.ファイルA、ファイルBを読み込む > > 2.読み込んだファイルAの情報を元にファイルBを更新する > > 3.2で更新したファイルBを出力する。 > > 複数ファイルを持回る方法、また入力したファイルに > > 対して出力を行う方法が分からず苦慮しております。 > > ファイルBのフォーマットやエラー時のリカバリ方法にもよりますが、 > 方法は大きく2通りあります。 > ※Batch3を前提として回答しています。 > > <方法A: ファイルBをDBに取り込み、更新後、ファイルに出力する> > 1. 前処理として、ファイルBをDBに取り込む。 > 2. 主処理として、ファイルAのレコードごとに、DBを更新する。 > (コレクタでファイルAを開いて、レコード数分実行されるところでDBを更新する) > 3. ファイルAのレコードが無くなったら、後処理として、DBで更新済みの情報をファイルBに出力する。 > > <方法B: ファイルBをランダムアクセスで直接更新する> > 前提条件: > ・ファイルBは固定長フォーマットである。 > ・ジョブが途中で異常終了した場合、ファイルBが中途半端に更新された状態であってもよい。 > 1. 前処理として、java.io.RandomAccessFileを用いて、ファイルBを読み書きモードで開き、 > 一旦最初から最後まで読み、レコードを特定するための主キーの値と、 > ファイル上の位置(RandomAccessFile#seekに渡すlong値)を対応づけて、 > HashMap等に保持しておく。 > (ファイルAのレコードを処理するたびにファイルBの更新位置を探していると、 > 無駄に時間がかかってしまうため、 > 主キーの値とファイルB内のレコードの先頭位置をマッピングしておき、 > レコードの先頭位置+定数で、更新位置が決定できるようにする。) > 2. 主処理として、ファイルAのレコードごとに、ファイルBを更新する。 > (前処理でファイルBを開いたRandomAccessFileを利用する。) > 3. ファイルAのレコードが無くなったら、後処理として、ファイルBを開いたRandomAccessFileをcloseする。 > > ※「前処理」はコレクタのループより上、 > 「主処理」はコレクタのループ内、 > 「後処理」はコレクタのループより下に配置する処理を意図しています。 > > 方法Bは、文字通り、ファイルBを入力かつ出力ファイルにする方法で、DBは不要なのですが、 > 方法Aの方が汎用的です。
You can not use Wiki syntax
You are not logged in. To discriminate your posts from the rest, you need to pick a nickname. (The uniqueness of nickname is not reserved. It is possible that someone else could use the exactly same nickname. If you want assurance of your identity, you are recommended to login before posting.)
Login
Nickname
Preview
Post
Cancel
Re: TERASOLUNA Batchを利用したファイル入出力の実現方法について (2015-08-19 18:15 by
TERASOLUNAの入門者
#76764)
Reply
Create ticket
ご回答ありがとうございました。
今回の開発の前提条件として、DBへのアップロードについて
はコマンドを使用して一括で実行することとなっておりレコード
ごとの更新は行えない方針となっております。
そのため、DBデータをCSV形式で出力し、CSVファイルとして更新
を実行する必要があるため残念ながらご提示いただいた処理方式
を採用することは難しくなっています。
またファイル自体も可変長のファイルとなってしまうため方法Bを
使用した処理方式についても採用ができません。
前提条件の記述をせずに質問をしてしまい申し訳ありませんでした。
処理内容について再度検討し、処理を細かく分割することでファイルと
DBを合わせた形で処理を行えるよう検討したいと思います。
Reply to
#76761
Reply to #76764
×
Subject
Body
Reply To Message #76764 > ご回答ありがとうございました。 > > 今回の開発の前提条件として、DBへのアップロードについて > はコマンドを使用して一括で実行することとなっておりレコード > ごとの更新は行えない方針となっております。 > > そのため、DBデータをCSV形式で出力し、CSVファイルとして更新 > を実行する必要があるため残念ながらご提示いただいた処理方式 > を採用することは難しくなっています。 > > またファイル自体も可変長のファイルとなってしまうため方法Bを > 使用した処理方式についても採用ができません。 > > 前提条件の記述をせずに質問をしてしまい申し訳ありませんでした。 > > 処理内容について再度検討し、処理を細かく分割することでファイルと > DBを合わせた形で処理を行えるよう検討したいと思います。
You can not use Wiki syntax
You are not logged in. To discriminate your posts from the rest, you need to pick a nickname. (The uniqueness of nickname is not reserved. It is possible that someone else could use the exactly same nickname. If you want assurance of your identity, you are recommended to login before posting.)
Login
Nickname
Preview
Post
Cancel