100バイトの固定長がCRLFで区切られて10000000行あります。

4バイト目から5バイト分の組み合わせで行を取得(100バイト+CRLF)しファイル分割したいと考えています。ソート済みとします。組み合わせを作る5バイトはファイル名として使用できる英数とします。
シェルスクリプトやプログラム言語、データベースにロードしてなどではなく、よいツールを探しています。これが最速じゃない?というのを教えてください。
ハードはIAサーバーでPen4の2.8が2つ、RAMは4GB。OSはWindowsかLinuxで。

回答の条件
  • URL必須
  • 1人2回まで
  • 登録:2005/09/05 03:27:28
  • 終了:--

回答(3件)

id:aki73ix No.1

aki73ix回答回数5224ベストアンサー獲得回数272005/09/05 19:28:31

ポイント30pt

上記URLの

データベース簡易抽出ソフト [DL Ver 1.0]

です


データベースにロードしないでアプリケーションレベルで直接操作ということなので、速度的に制約があるかもしれませんが、手作りのものです


ある程度データ形式が変わってもファイル分割抽出できるようになっています


ソートされていないデータでなくても実行できますが、固定長のデータであれば、ソートされたデータは若干高速に処理できるようになっています


100バイト+CRLFということなので、固定長102バイトにして、追記モード、レコードの特定位置指定、レコード開始位置4、バイト数5にしてから、実行してみてください


なお、実行時には出力先のフォルダの中身を空にするかどうかきいて来ますので、大事なフォルダを間違えて指定しないようにして下さい

id:mwys

ありがとうございます。

試してみます。

2005/09/05 22:32:26
id:goldman No.2

goldman回答回数86ベストアンサー獲得回数02005/09/05 22:38:10

ポイント50pt

ご要望の機能を実現するためには、コマンダ64以外にはないのではないかと思います。

RECSEL コマンド⇒条件で行を抽出する。

RECEDT コマンド⇒レイアウトを変更して出力する。

※この程度のファイルなら、指定のマシンスペックなら30秒くらいで処理されます。

id:mwys

ありがとうございます。いいかんじですね。

2005/09/06 20:42:45
id:goldman No.3

goldman回答回数86ベストアンサー獲得回数02005/09/05 23:08:00

さきほどのデータを実際に加工してみました。

以下のコマンドを実行すると、XEON2.8×2の環境では、30秒ほどで処理されました。


RECCMP INPUT.TXT OUTPUT.TXT (4,5)

RECEDT OUTPUT.TXT SPLIT.BAT (C,RECSEL)(S,1)(C,OUTPUT.TXT)(S,1)(4,5)(C,.TXT)(S,1)(C,0x28)(C,4)(C,0x2C)(C,5)(C,0x29)(C,[)(4,5)(C,])

CALL SPLIT.BAT

id:mwys

ご丁寧にありがとうございます!!

2005/09/06 20:43:41

コメントはまだありません

この質問への反応(ブックマークコメント)

トラックバック

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません