使用C#将文本文件中特定行的数据加载到SQL中
我的问题很简单但很复杂。我是一个SQL数据库开发人员,现在必须创建一个包含C#代码的SSIS包。该代码需要做一些事情,但我遇到的问题是:使用C#将文本文件中特定行的数据加载到SQL中
- 读取文本文件的最后一行并将该行插入到SQL表中的列中。
- 需要将第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等),然后阅读关于该主题的教程。周围有很多。
试试这个发现在网上你
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-20 09:09:56
否thnx,是否更快;否则 – JohnnBlade 2012-07-20 09:22:17
你需要连接什么样的数据库? – JohnnBlade 2012-07-20 09:23:45
感谢您的帮助。这已经指向了我正确的方向。至于我如何访问数据库,我还不确定。我首先需要弄清楚如何提取数据等,然后才能打破我的头脑。感谢您快速回复! – 2012-07-20 08:56:17
这些文件大约12 MB,似乎包含大约40000奇数记录... – 2012-07-20 09:09:45