2013-08-23 4 views
1

У меня есть файл Excel, который требуется для анализа, проверки и загрузки в базу данных SQL Server с помощью Interop. У меня работает приложение, и все хорошо, читая лист, читая каждую строку (строку и столбцы) и добавляя эту строку в список как оператор Insert. Когда я дойду до конца рабочего листа, я выполняю все инструкции Insert как одну партию.C# для чтения файла в базу данных

Проблема заключается в том, что она использует много ОЗУ, когда рабочий лист большой (1000+ строк). Существует ли более эффективная стратегия для более крупных данных? Должен ли я совершать больше и освобождать список?

+0

Не знаете, сохраните ли вы столько памяти, но «лучшая или более эффективная стратегия для больших данных», вероятно, будет использовать [SqlBulkCopy] (http://msdn.microsoft.com/library/system.data .sqlclient.sqlbulkcopy.aspx). – Corak

+1

для других предложений было бы лучше, если бы мы могли видеть ваш код. Возможно, есть несколько других линий для повышения эффективности. –

ответ

2

Не думаю, что на стороне синтаксического разбора вы можете многое сделать (если только вы не кодируете все это самостоятельно), но я бы дал INSERT данные, как только у вас будет доступная строка. Не нужно хранить его в списке. В вашем решении вы в основном сохраняете все данные дважды (один раз в «памяти Excel» и один раз в «памяти вставки базы данных»).

+0

Хорошо. Приветственные ребята – Adrian

Смежные вопросы