我构建了一个简单的文件解析器,它逐行读取 csv 文件并将其添加到数据库中。
在文件完全解析之后,我不会提交对数据库的更改。
它工作正常,但出于某种原因,每个下一个文件 - 解析变得越来越慢,这里是代码,非常欢迎有关如何加快速度的任何建议。
using Microsoft.VisualBasic.FileIO;
using System;
using System.IO;
namespace CsvToSQL
{
internal class Program
{
private static void Main(string[] args)
{
TransactionsEntities entities = new TransactionsEntities();
string targetFolderPath = "C:\\Transactions\\";
string[] allFiles = Directory.GetFiles(targetFolderPath);
//Loop through files in folder
foreach (var file in allFiles)
{
//parse file
Console.WriteLine(file);
using (TextFieldParser parser = new TextFieldParser(file))
{
parser.TextFieldType = FieldType.Delimited;
parser.SetDelimiters(",");
int lineNo = 0;
while (!parser.EndOfData)
{
TransactionList transaction = new TransactionList();
//processing row
string[] fields = parser.ReadFields();
try
{
if(lineNo % 20 == 0)
{
Console.WriteLine(file + " Parsed line no: " + lineNo);
}
transaction.Account = fields[0];
transaction.Timestamp = fields[1];
transaction.TransactionType = fields[2];
transaction.Status = fields[3];
transaction.Product = fields[4];
transaction.Price = fields[5];
transaction.BuySell = fields[6];
transaction.Series = fields[7];
transaction.Volume = fields[8];
transaction.FillVolume = fields[9];
transaction.OrderID = fields[10];
transaction.BestBid = fields[11];
transaction.BestAsk = fields[12];
entities.TransactionLists.Add(transaction);
lineNo++;
}
catch(Exception e)
{
Console.WriteLine(e.ToString());
Console.ReadKey();
}
}
try
{
entities.SaveChanges();
}catch(Exception e)
{
Console.WriteLine(e.ToString());
Console.ReadKey();
}
}
}
}
}
}
大家好,我发现了内存问题 - 如果有人遇到类似的问题。
TransactionsEntities entities = new TransactionsEntities();
这就是导致它如此令人难以置信地减速的原因。它使用与 DB 相同的连接将其替换为:
using (TransactionsEntities entities = new TransactionsEntities()){
//Transaciton parsing code for 1 file
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句