1

私の問題は単純ですが複雑です。私は、C# コードを含む SSIS パッケージを作成する必要がある SQL DB 開発者です。コードはいくつかのことを行う必要がありますが、私が問題を抱えているコンポーネントは次のとおりです。

  1. テキスト ファイルの最後の行を読み取り、その行を SQL テーブルの列に挿入します。
  2. 2 番目の行から 2 番目の最後の行までの各詳細行を別のテーブルに挿入する必要があります。

私はC#に比較的慣れていないため、これについてどうすればよいかわかりません。誰かが私を正しい方向に導いてくれますか?

4

2 に答える 2

3

ファイルの大きさは?すべてをメモリに読み込むことができれば、人生はずっと簡単になります。

string[] lines = File.ReadAllLines("file.txt");

// Could use lines[lines.Length - 1] but LINQ makes it simpler...
string lastLine = lines.Last();

IEnumerable<string> otherLines = lines.Skip(1).Take(lines.Length - 2);

それが「ファイルからデータを取得する」部分です。データベースの部分については、十分な情報が提供されていません。データベースにアクセスする方法 (直接の ADO.NET、LINQ など) を決定し、そのトピックに関するチュートリアルを読む必要があります。周りにはたくさんあります。

于 2012-07-20T08:26:54.350 に答える
0

オンラインで見つけたこれを試してみてください

public static String ReadLastLine(string path)
{
    return ReadLastLine(path, Encoding.ASCII, "\n");
}

public static String ReadLastLine(string path, Encoding encoding, string newline)
{
    int charsize = encoding.GetByteCount("\n");
    byte[] buffer = encoding.GetBytes(newline);
    using (FileStream stream = new FileStream(path, FileMode.Open))
    {
        long endpos = stream.Length / charsize;
        for (long pos = charsize; pos < endpos; pos += charsize)
        {
            stream.Seek(-pos, SeekOrigin.End);
            stream.Read(buffer, 0, buffer.Length);
            if (encoding.GetString(buffer) == newline)
            {
                buffer = new byte[stream.Length - stream.Position];
                stream.Read(buffer, 0, buffer.Length);
                return encoding.GetString(buffer);
            }
        }
    }
    return null;
}

http://social.msdn.microsoft.com/Forums/en/netfxbcl/thread/ff6c07e2-9c36-4490-a989-f24dcff76145

于 2012-07-20T08:30:07.440 に答える