Клиент использует наше веб-приложение для анализа XML-файла для базы данных. Затем использует информацию из файла XML из базы данных для различных других вещей. Я на данный момент потоковое чтение и потоковая запись файла. Когда файлы были меньше, их обычно анализировали в строку, а затем вставляли в запись базы данных. Проблема в том, что файл настолько большой, что на компьютерах недостаточно оперативной памяти для обработки такой большой строки, как я могу обработать этот файл и сохранить его в базе данных?
using (var reader = new StreamReader(outputPath))
{
string line = string.Empty;
bool save = false;
using (var sWriter = new StreamWriter(inputPath))
{
while ((line = reader.ReadLine()) != null)
{
System.Diagnostics.Debug.WriteLine(line);
if (line.Contains("<SaveDataFromScout>"))
{
sWriter.WriteLine("<SaveDataFromScout>");
save = true;
continue;
}
else if (line.Contains("</SaveDataFromScout>"))
{
sWriter.WriteLine(line);
save = false;
}
if (save)
{
if (line.Contains("ELEMENT TEXT"))
line = line.Replace("ELEMENT TEXT", "ELEMENTTEXT");
sWriter.WriteLine(line);
}
}
}
}
//string workbookXML = System.IO.File.ReadAllText(outputPath);
transactionID = DAC.ExecuteScalar
(
db.ConnectionString,
"dbo.cwi_InsertTransaction",
new SqlParameter("@TransactionTypeID", transactionTypeID),
new SqlParameter("@UploadedFileName", fileDataLink),
//new SqlParameter("@UploadedFileXml", workbookXML),
new SqlParameter("@CurrentUserID", CurrentUser.UserID)
);
Видите ли вы закомментированный код, в котором он ранее был преобразован в строку для анализа в базе данных? Ну, это работает, но это не работает для файлов размером около 888 МБ.