我的问题既简单又复杂。我是一名 SQL DB 开发人员,现在必须创建一个包含 C# 代码的 SSIS 包。代码需要做一些事情,但我遇到问题的组件是:
- 读取文本文件中的最后一行并将该行插入到 SQL 表的列中。
- 从第 2 行到倒数第 2 行的每个详细信息行都需要插入到另一个表中。
我对 C# 比较陌生,不知道如何去做。有人可以指导我正确的方向吗?
我的问题既简单又复杂。我是一名 SQL DB 开发人员,现在必须创建一个包含 C# 代码的 SSIS 包。代码需要做一些事情,但我遇到问题的组件是:
我对 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