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

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

问题描述:

我的问题很简单但很复杂。我是一个SQL数据库开发人员,现在必须创建一个包含C#代码的SSIS包。该代码需要做一些事情,但我遇到的问题是:使用C#将文本文件中特定行的数据加载到SQL中

  1. 读取文本文件的最后一行并将该行插入到SQL表中的列中。
  2. 需要将第2行到第2行的每个详细行插入到另一个表中。

我对C#比较陌生,不知道如何去做这件事。有人能指导我在正确的方向吗?

该文件有多大?如果你可以看到这一切到内存中,它会让生活很多简单:

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等),然后阅读关于该主题的教程。周围有很多。

+0

感谢您的帮助。这已经指向了我正确的方向。至于我如何访问数据库,我还不确定。我首先需要弄清楚如何提取数据等,然后才能打破我的头脑。感谢您快速回复! – 2012-07-20 08:56:17

+0

这些文件大约12 MB,似乎包含大约40000奇数记录... – 2012-07-20 09:09:45

试试这个发现在网上你

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

+0

谢谢,约翰。我肯定会研究这个! – 2012-07-20 09:09:56

+0

否thnx,是否更快;否则 – JohnnBlade 2012-07-20 09:22:17

+0

你需要连接什么样的数据库? – JohnnBlade 2012-07-20 09:23:45