我有一個1000的文本文件,我想讀單到單,每個文件都有一個470萬的記錄,例如在文件中的行之一是:
如何讀取大文本文件?
43266200 6819 43295200 1393/05/23 14:28:45 113 1
,我想保存到例如SQL服務器:
field1:43266200
field2:6819
我該怎麼做?
我有一個1000的文本文件,我想讀單到單,每個文件都有一個470萬的記錄,例如在文件中的行之一是:
如何讀取大文本文件?
43266200 6819 43295200 1393/05/23 14:28:45 113 1
,我想保存到例如SQL服務器:
field1:43266200
field2:6819
我該怎麼做?
這可能會幫助你
var message ="43266200 6819 43295200 1393/05/23 14:28:45 113 1";
//Split your data into pieces
var messages=message.Split(' ').Where(o => !string.IsNullOrEmpty(o));
var i=0;
foreach(var item in messages)
{
// do whatever you wanna to do with pieces
Console.Write("field {0}:{1}",++i,item);
}
這將導致一堆空白字段,因爲你在一個空間分裂。最少使用'StringSplitOptions.RemoveEmpties'。 – Tim 2014-11-02 07:40:36
感謝您的信息:) – 2014-11-02 07:44:34
如果你正在閱讀從文件中的文本,並且可以合理地假定空格字符將是你唯一的分隔符,你應該使用String.Split()
方法來標記每行:
// instantiate FileInfo of your file as yourFile
foreach (string line in yourFile.ReadLines())
{
string[] lineTokens = line.Split(new char[] { ' ' }, StringSplitOptions.RemoveEmptyEntries);
}
String.Split()
允許你任何串分離成一個字符串[]基於所述char
定界符你在第一個參數提供子串。上面代碼中的第二個參數是StringSplitOptions枚舉中的值之一,其值爲None(提供所有字符串)或RemoveEmptyEntries(不返回任何僅由分隔符字符組成的子字符串)。
然後,您可以從那裏遍歷lineTokens並從每個標記組裝一個對象,或者可以組裝任何給定索引對應於您要添加的行中列的SQL查詢。
var seperators = " ".ToCharArray();
foreach(var line in File.ReadLines(path))
{
var fields = line.Split(seperators, StringSplitOptions.RemoveEmptyEntries);
//now you have fields[0] and fields[1], save them in your database
}
每行(記錄)有多大?記錄的固定長度是多少?我建議使用StreamReader來避免可能出現的內存不足問題。 – Tim 2014-11-02 07:39:35
如果您的文件足夠大,您可能需要[C#按行讀取文件行](http://stackoverflow.com/questions/1271225/c-sharp-reading-a-file-line-by-line)不想一次加載到內存中。 – mihai 2014-11-02 07:50:49
所以你需要一本書告訴你如何閱讀一個文本文件?試過文件? – TomTom 2014-11-02 08:21:15