我的問題很簡單但很複雜。我是一個SQL數據庫開發人員,現在必須創建一個包含C#代碼的SSIS包。該代碼需要做一些事情,但我遇到的問題是:使用C#將文本文件中特定行的數據加載到SQL中
- 讀取文本文件的最後一行並將該行插入到SQL表中的列中。
- 需要將第2行到第2行的每個詳細行插入到另一個表中。
我對C#比較陌生,不知道如何去做這件事。有人能指導我在正確的方向嗎?
我的問題很簡單但很複雜。我是一個SQL數據庫開發人員,現在必須創建一個包含C#代碼的SSIS包。該代碼需要做一些事情,但我遇到的問題是:使用C#將文本文件中特定行的數據加載到SQL中
我對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