1

我的问题既简单又复杂。我是一名 SQL DB 开发人员,现在必须创建一个包含 C# 代码的 SSIS 包。代码需要做一些事情,但我遇到问题的组件是:

  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 回答