Я пытаюсь вставить данные из таблицы sql для доступа к базе данных, используя C#. Вставка в базу данных доступа занимает слишком много времени. Работает почти 1 час. Может ли кто-нибудь предложить какой-либо способ оптимизации кода:
Ниже мой код для вставки данных в базу данных Access
using (OleDbConnection connection = new OleDbConnection(_configuration.GetConnectionString("AccessConnection")))
{
using (OleDbCommand cmd = new OleDbCommand("INSERT INTO RecsCD(RecordingDate, Gr,Grant,DocType, DocNumber,UserDocNumber,NumOfPages) values (?, ?, ?, ?, ?, ?, ?)", connection))
{
connection.Open();
foreach (var records in recList)
{
cmd.Parameters.Add("@RecordingDate", OleDbType.VarChar).Value = records.RecordingDate == null ? "" : records.RecordingDate;
cmd.Parameters.Add("GR", OleDbType.VarChar).Value = records.Grantor == null ? "": records.Gr;
cmd.Parameters.Add("Grant", OleDbType.VarChar).Value = records.Grantee == null? "": records.Grant;
cmd.Parameters.Add("DocType", OleDbType.VarChar).Value = records.DocType == null ? "" : records.DocType; ;
cmd.Parameters.Add("DocNumber", OleDbType.VarChar).Value = records.DocNumber == null ? "" : records.DocNumber; ;
cmd.Parameters.Add("UserDocNumber", OleDbType.VarChar).Value = records.InternalDocNumber == null ? "" : records.InternalDocNumber; ;
cmd.Parameters.Add("NumOfPages", OleDbType.VarChar).Value = records.NumberPages == null ? "" : records.NumberPages; ;
cmd.ExecuteNonQuery();
}
}
Запрос, который я использую для вставки данных, является просто запросом выбора :
изменить процедуру RecLoad_GetPrimeparsedData
AS
SELECT
[RecLoadId]
,[DocNumber]
,[InternalDocNumber]
,[RecordingDate]
,[DocType]
,[DocDescription]
,[Gr]
,[Grant]
,[NumberPages]
,[SourceCode]
,[Parcel_No]
FROM [db_recload].[dbo].[RecLoadSplit]
Я получаю данные в C# с использованием хранимой процедуры:
publi c Список getPrimeData () {
return _context.RecLoad
.FromSql("EXECUTE RecLoad_GetPrimeparsedData").ToList();
}
всего в таблице 6843 строки
любая помощь будет принята с благодарностью.