C# 使用C将文本文件中特定行的数据加载到SQL中#

C# 使用C将文本文件中特定行的数据加载到SQL中#,c#,sql,text-files,C#,Sql,Text Files,我的问题简单而复杂。我是一名SQL DB开发人员,现在必须创建一个包含C#代码的SSIS包。代码需要做一些事情,但我遇到问题的组件是: 读取文本文件中的最后一行,并将该行插入SQL表的列中 从第二行到最后第二行的每个明细行都需要插入到另一个表中 我对C#比较陌生,不知道该怎么做。有人能告诉我正确的方向吗?这个文件有多大?如果你能把这些都读入记忆,生活就会简单得多: string[]lines=File.ReadAllLines(“File.txt”); //可以使用lines[lines.Len

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

  • 读取文本文件中的最后一行,并将该行插入SQL表的列中
  • 从第二行到最后第二行的每个明细行都需要插入到另一个表中

  • 我对C#比较陌生,不知道该怎么做。有人能告诉我正确的方向吗?

    这个文件有多大?如果你能把这些都读入记忆,生活就会简单得多:

    string[]lines=File.ReadAllLines(“File.txt”);
    //可以使用lines[lines.Length-1],但LINQ使它更简单。。。
    字符串lastLine=lines.Last();
    IEnumerable otherLines=lines.Skip(1).Take(lines.Length-2);
    

    这就是“从文件中获取数据”部分。对于数据库部分,您没有真正为我们提供足够的信息来帮助您。您需要确定如何进行数据库访问(直接ADO.NET、LINQ等),然后阅读有关该主题的教程。附近有很多。

    试试这个,在网上为你找到它

    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;
    }
    
    公共静态字符串ReadLastLine(字符串路径)
    {
    返回ReadLastLine(路径,Encoding.ASCII,“\n”);
    }
    公共静态字符串ReadLastLine(字符串路径、编码、字符串换行)
    {
    int charsize=encoding.GetByteCount(“\n”);
    byte[]buffer=encoding.GetBytes(换行符);
    使用(FileStream-stream=newfilestream(路径,FileMode.Open))
    {
    long-endpos=流长度/字符大小;
    用于(长pos=charsize;pos

    谢谢你的帮助。这已经为我指明了正确的方向。至于我将如何访问数据库,我还不确定。我首先需要弄清楚如何提取这些数据,等等,然后我才想打破我的头脑。感谢您的快速回复!谢谢你,约翰。我一定会调查的!不,是斯图肯·斯内勒,它走得更快;)您必须连接到哪种数据库?我需要连接到SQL 2008数据库。
    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;
    }