Дело в том, что в настоящее время я разрабатываю какое-то приложение, где мне приходится загружать данные с листа excel и сохранять его в таблице базы данных (оракул). Мне удалось выполнить этот процесс, класс OracleDataAdapterВставка большого количества данных из gridView в базу данных в малые промежутки времени
_adapter = new OracleDataAdapter(query, _conn);
_adapter.Update(_dataTable);
Однако это занимает много времени, чтобы сохранить данные, загруженные в GridView, как 12 минут для 100000 реестров. Затем я попробовал OracleBulkCopy
, который действительно работает примерно через 10-15 секунд, но проблема в том, что он не соблюдает первичный ключ из базы данных. Я пробовал все, но он не соблюдает ограничение.
Я также попытался сделать метод вставки сам делать что-то вроде этого:
OracleCommand cmdInsert = new OracleCommand();
cmdInsert.CommandText = query;
cmdInsert.Connection = DataAccess._conn;
OracleParameter id_Filtro = new OracleParameter();
cmdInsert.Parameters.Add(id_Filtro);
foreach (DataRow r in _table.Rows)
{
id_Filtro.DbType = DbType.Int32;
id_Filtro.Value = Convert.ToInt32(r["ID_FILTRO"].ToString());
id_Filtro.ParameterName = "id_Filtro ";
cmdInsert.ExecuteNonQuery();
}
Я сделал то же самое для каждого параметра, но и принимает возрастов, чтобы вставить все данные, около 25 минут или так , Интересно, есть ли лучший способ сделать этот процесс. Если бы кто-нибудь мог мне помочь, я был бы очень благодарен. Я могу обновить сообщение, чтобы прояснить любой запрос, пожалуйста, обратите внимание, что я не специалист по базам данных или программисту.
'требуется много времени, чтобы сохранить данные, загруженные в gridView, например, 12 минут для 100000 реестров'. Возможно, вам будет интересно наблюдать [этот короткий клип] (http://www.youtube.com/watch ? v = D3Y6DnFpHCA) –
BulkCopy - это правильный путь для этого тома. Лучше всего отделить свои шаги. Не загружайте его непосредственно в целевую таблицу. Загрузите его в рабочий стол, затем используйте хранимую процедуру для массажа по мере необходимости в целевой таблице. – dbugger
@ dbugger, не могли бы вы рассказать мне об этом больше? – Nivde