0

多くの行を持つファイルがあるように、C# でファイル パーサーを開発しています。それをデータベースに書き込みたい。

ファイルを読み取って挿入を発行するループを作成しました。

ただし、私がやりたいのは、100行を読んでから100行すべてをコミットし、次の100行を読んでコミットするということです。

私の問題 (少し概念的) は、100 未満になる可能性がある最後の行セットを見つける方法です。

たとえば、ファイルに 550 行ある場合、100 の 5 つのチャンクを読み取り、ライン カウンターでモジュラス演算子を使用してそれらをコミットできますが、50 の最後のバッチはどうなりますか?

この分野のアイデアは高く評価されます。

ありがとう。

4

3 に答える 3

0

読み取るものが他にないときに読み取り関数が false を返す場合。その後、これを試すことができます。

int i = 1;
while (read())
{
     if (i % 100 == 0)
     {
        for int (j = 0; j < 100; j++)
        { 
            write();
        }
     }
     i++;
}
for (int j = 0; j < i % 100; j++)
{
     write();
}
于 2013-04-11T20:29:49.440 に答える
0

ここで私の心を締めくくります:

最初のオプションは、「\n」をすばやく数えて、行数を取得します。次に、結果が行数に非常に近くなるように、2 の倍数でチャンクを読み取ります。たとえば、501 行が存在する場合、250 と 250 のチャンクを読み取ります。その後、1 行だけが残ります。コードを最初に実行するときは、奇数か偶数かを確認してください。奇数の場合は最後の行をコミットすることを忘れないでください。行数が偶数の場合は、最後の行を補正する必要はありません。お役に立てれば。

PS: 数を 2 の倍数に分割した後、非常に大きい場合はさらに 2 に分割できます (分割して征服してください!)。

于 2013-04-11T18:43:01.210 に答える