テキストファイルの解析にFileHelperライブラリを使用しようとしています。最終的にデータはデータベースに格納されます。テキストファイルには位置情報が含まれています。レコードの最初の2文字は、レコードの階層内の位置を定義します。 ファイルは以下のように順序付けされる:FileHelperライブラリを使用してnレベル階層の位置レコードファイルを解析する
- 10共通データ(10-19全てが同じレベルを有する)
- 20第2のレベルのデータ(20-29が同じレベルを有する)
- 30個の第3レベルデータ(30-39が同じレベルを有する)
- 40 4レベルデータ
- 50レベル5データ
- 60最終レベルのデータ
- 60最終レベルのデータ
- 50レベル5のデータ
- 60最終レベルのデータ
- 60最終レベルのデータ
- 50レベル5データ
- 40 4レベルデータ
- 50のレベル5データ
- 60最終レベルデータ
- 60最終レベルデータ
- 50レベル5データ
- 60最終レベルデータ
- 60最終レベルデータ
- 50のレベル5データ
- 40 4レベルデータ
- 30 20、40、50、60の配列を繰り返し40、50、60 ..
- 30個の第3レベルデータ(30-39が同じレベルを有する)
- 20第2のレベルのデータ(20-29が同じレベルを有する)
- 20第2レベルのデータ
- の第3レベルデータが
- 反復配列..と私は今ように...
- の第3レベルデータが
FileHelperのMaster-Detailコンセプトを使用しようとしていますが、Master-Detailの1つのレベルでのみ動作すると思います。関連するテーブルを埋めるために使用できるデータの階層を作成するために使用できますか?すべてのレコードは固定長レコードなので問題はありません。
注意:レコード間には主キーと外部キーの関係はありません。位置とレコード番号は、誰が親(マスター)であり、誰が子供(詳細)であるかを示します。
サンプル日付は以下の通りである:
10R 420120320F 20120320212045 16
11F FFuture
11C OCall
11P OPut
12CADCanadian Dollars 0
12CHFSwiss Francs 0
12CZKCzech Republic Korun 0
12DEMGerman Marks 0
12DKKDanish Krone 0
12ESBSpanish Pesatas 3
12EUREuropean currency Un 0
12FIMFinnish Mark 0
14 1 20.0000 100 2O UKX 1A 1L Z 1B 1
14 2 20.0000 100 2L EFE 1A 1O EFE 1B 1
14 3 20.0000 100 2L EFP 1A 1O EFP 1B 1
14 4 20.0000 100 2L CCI 1A 1O CCI 1B 1
14 5 20.0000 100 2L AXI 1A 1O AXI 1B 1
14 6 20.0000 100 2L BLI 1A 1O BLI 1B 1
15 1F+0, VOL+ 2
15 2F+0, VOL- 1
15 3F+1/3, VOL+ 4
15 4F+1/3, VOL- 3
15 5F-1/3, VOL+ 6
15 16F-EXTREME 16
16EQYLIFFE Equities
16IPEIntl. Petroleum Exchange
16LCPLIFFE Commodity Products
16LIFLIFFE Financials
16LIGLIFFE OTC
16LMELME Metals
20L LIFFE F
30AXIAEX Index EQYEUR2.000.3500 10 110 1
31 1 10000000099999999
32 1 220 2 1 1A 1 1B
34 1 1 1 1
40ZAXFAEX Index Future EUR 10000 10 0.02000 1.00 0 0 2000002
50201204000.0000000.25000.2500 120120400
60 0F 1 3308420 1.0000 0 0 -66667 -66667 66667 66667-133333-133333 133333 133333-200000-200000 200000 200000-140000 140000
50201205000.0000000.25000.2500 120120500
60 0F 1 3262910 1.0000 0 0 -66667 -66667 66667 66667-133333-133333 133333 133333-200000-200000 200000 200000-140000 140000
50201206000.0000000.25000.2500 120120600
60 0F 1 3258970 1.0000 0 0 -66667 -66667 66667 66667-133333-133333 133333 133333-200000-200000 200000 200000-140000 140000
40I OTHREE MONTH EURO (EUEUR 10000 25 0.25000 1.00 3 1000 32002
50201204000.0000000.35000.3500 120120600
60 97750C 1 16000 1.0000 0 0 -1067 -1067 1067 1067 -2133 -2133 2133 2133 -3200 -3200 3200 3200 -2240 2240
60 97750P 1 0 0.0000 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
60 97875C 1 14750 1.0000 0 0 -1067 -1067 1067 1067 -2133 -2133 2133 2133 -3200 -3200 3200 3200 -2240 2240
60 97875P 1 0 0.0000 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
30L 3 Month Pound Sterli LIFGBP2.000.3500 11010 1
31 6 10000000020120600 22012090020121200 32013030020131200 42014030020141200 52015030020151200 62016030099999999
32 1 50 2 2 1A 2 1B
32 2 55 2 1 1A 1 1B
32 21 290 2 6 1A 6 1B
34 2 1 1 3 2 4 6
誰がこれを解析するFileHelperまたは他のライブラリや、いくつかのアルゴリズムを使用する方法で私を導くことができるしてください。 XMLを使用することはファイルサイズが大きい(100 Mb)ので問題になる可能性があります。そのため、非XMLベースのアプローチ(私の以前のアプローチはXMLベースであり、建築家によって拒否されました)を好むでしょう。
ありがとうございます。
これを確認していただきありがとうございます。 ファイルヘルパー(マルチレコードエンジン)で2日を過ごした後、それを理解しました。だから、私はあなたに言及したのと同じような何かを追っている。 1.行ごとに読み取る 2.オブジェクトの階層を作成します(レコードタイプごとに1つのクラス) 3。行のフィールドを解析する責任は個々のクラスに任せてください。 4.フィールドをデータベースに保存してから自分自身を廃棄するために、(各クラスごとに)何らかのインターフェイスを実装します。 5.子供がセーブする前に親がセーブすることをチェックするだけですが、すべての子がセーブを完了したら処分します。 – Darsin