Download
Entwicklung
Konto
Download
Entwicklung
Anmelden
Vergessen Konto/Passwort
Konto erstellen
Sprache
Hilfe
Sprache
Hilfe
×
Anmelden
Anmeldename
Passwort
×
Vergessen Konto/Passwort
Übersetzungsstatus von Deutsch
Kategorie:
Software
Personen
PersonalForge
Magazine
Wiki
Suche
OSDN
>
Finden Software
>
System
>
TERASOLUNA Framework
>
Foren
>
Offene Diskussion
>
TERASOLUNA Batchを利用したファイル入出力の実現方法について
TERASOLUNA Framework
Beschreibung
Projekt Zusammenfassung
Entwickler-Dashboard
Web-Seite
Entwickler
Bildergalerie
RSS Feed-Liste
Aktivität
Statistiken
Historie
Downloads
Aller Releases-Liste
Statistiken
Quellcode
Quellcode-Repositorys-Liste
Subversion
Repository ansehen
Ticket
Ticket-Liste
Liste der Meilensteine
Typenliste
Komponentenliste
Liste der zuletzt benutzten Tickets/RSS
Neue Ticket abschicken
Dokumente
Wiki
Titelseite
Titel-Index
Kürzliche Änderungen
Doc Mgr
List Docs
Kommunikation
Foren
Forum-Liste
Offene Diskussion (1277)
Mailinglisten
Alle Mailinglisten
terasoluna-information
Neuigkeiten
Foren:
Offene Diskussion
(Thread #37055)
Zurück zur Thread-Liste
RSS
TERASOLUNA Batchを利用したファイル入出力の実現方法について (2015-08-13 20:39 by
TERASOLUNAの入門者
#76733)
Antworten
Ticket erstellen
お世話になります。
TERASOLUNA Batchを利用して以下のような
処理を実現したいと考えておりますが実現
は可能でしょうか。
1.ファイルA、ファイルBを読み込む
2.読み込んだファイルAの情報を元にファイルBを更新する
3.2で更新したファイルBを出力する。
複数ファイルを持回る方法、また入力したファイルに
対して出力を行う方法が分からず苦慮しております。
実現方法をご存じのかたがいらっしゃいましたら
ご教示お願い致します。
何卒、宜しくお願い致します。
Reply to #76733
×
Subjekt
Körper
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.)
Anmelden
Nickname
Vorschau
Eintrag
Abbrechen
Re: TERASOLUNA Batchを利用したファイル入出力の実現方法について (2015-08-18 18:09 by
tajirim
#76761)
Antworten
Ticket erstellen
[メッセージ #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
×
Subjekt
Körper
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.)
Anmelden
Nickname
Vorschau
Eintrag
Abbrechen
Re: TERASOLUNA Batchを利用したファイル入出力の実現方法について (2015-08-19 18:15 by
TERASOLUNAの入門者
#76764)
Antworten
Ticket erstellen
ご回答ありがとうございました。
今回の開発の前提条件として、DBへのアップロードについて
はコマンドを使用して一括で実行することとなっておりレコード
ごとの更新は行えない方針となっております。
そのため、DBデータをCSV形式で出力し、CSVファイルとして更新
を実行する必要があるため残念ながらご提示いただいた処理方式
を採用することは難しくなっています。
またファイル自体も可変長のファイルとなってしまうため方法Bを
使用した処理方式についても採用ができません。
前提条件の記述をせずに質問をしてしまい申し訳ありませんでした。
処理内容について再度検討し、処理を細かく分割することでファイルと
DBを合わせた形で処理を行えるよう検討したいと思います。
Reply to
#76761
Reply to #76764
×
Subjekt
Körper
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.)
Anmelden
Nickname
Vorschau
Eintrag
Abbrechen