テキスト ファイルの解析に FileHelper ライブラリを使用しようとしています。最終的にデータはデータベースに保存されます。テキスト ファイルに位置レコードが含まれています。レコードの最初の 2 文字は、レコードの階層内の位置を定義します。ファイルは次の順序で並べられています。
- 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個の第3レベルデータ
- 40、50、60 の繰り返しシーケンス。
- 30 第 3 レベルのデータ (30 ~ 39 は同じレベル)
- 20 第 2 レベルのデータ
- 20、40、50、60 の繰り返しシーケンス...
- 20 第 2 レベル データ (20 ~ 29 は同じレベル)
今、私は 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 ベースであり、アーキテクトによって拒否されました)。
前もって感謝します。