venky_CodeProject Ответов: 1

Чтение объемных данных из excel на языке C#


Привет,

I am working on some migration project where data is exported from Oracle DB to Excel sheets. Extraction tool is different which is able to extract data to Excel around 1 Million also. In extraction tool Oledb Data reader is using which is extracting successfully. Even its extracting more than 1 M data as well in to multiple sheets in the same excel like Sheet1,Sheet2 etc. I need to read the entire excel data and store it in Data table. its working fine for below 6 lac data. But when i am trying to read the data from Excel using OleDb Data Adapter or Data Reader its failing when records exceed 8 Lac and giving error like "System Resources exceeded." My server is free and nothing is running ther and its 64 GB ram as well.

Найдите привязку кода ниже.

пробовал как с адаптером данных, так и с устройством чтения данных.


использование (var cmd = conn.CreateCommand())
{
УМК.CommandText = "SELECT * FROM [" + sheet + "]";
//var adapter = новый OleDbDataAdapter();
//адаптер.Команды selectcommand = ЦМД;
OleDbDataReader reader = cmd.Метода executereader();

если (лист.Содержит(DocSheet))
{
//адаптер.Fill(dtDocExcelData);
dtDocExcelData.Нагрузки(читатель);

Планируются.Как logwrite("нет файлов/документов с целью их обработки в файл :" + inputFilePath + "лист количество строк :" + dtDocExcelData.Строк.Рассчитывать);
}

еще если (лист.Содержит(Файловая Таблица))
{
//адаптер.Fill(dtFileExcelData);
dtFileExcelData.Нагрузки(читатель);

Планируются.Как logwrite("нет файлов/документов с целью их обработки в файл :" + inputFilePath + "лист количество строк :" + dtFileExcelData.Строк.Рассчитывать);
}

//очистка ресурсов
УМК.ResetCommandTimeout();
УМК.Располагать();
читатель.Располагать();
}


visual studio-это версия 2013 года, а код-на языке C#. Версия Excel также является последней в 2016 году (.XLSX).

пожалуйста, проверьте приведенную выше часть кода и дайте мне знать, где она не может загрузить объемные данные из excel. Есть ли другой способ решить эту проблему?

Когда я гуглил его, один из вариантов-обновление патча, но клиент может быть не готов к обновлению патча. Предоставьте мне любые другие альтернативные решения, чтобы преодолеть это. Проект будет жить до конца месяца. UAT - это фаза сбоя. пожалуйста, дайте мне альтернативное решение как можно скорее.

Жду ваших ценных предложений. Заранее спасибо.

С уважением,
Венкат

Что я уже пробовал:

Нужно прочитать объемные данные из Excel в таблицу данных.

CHill60

Почему вы пытаетесь прочитать так много данных в свой DataTable?

venky_CodeProject

Привет,

Я понял, к чему ты клонишь. Но в моем случае я должен разделить данные Excel с родительской папкой и соответствующими записями в качестве дочерних и подготовить для этого XML. XML имеет родительский узел папки, а дочерние узлы имеют документы, связанные с этой папкой.

Поэтому я читаю листы и загружаю данные в таблицу данных. Утилита извлечения работает и извлекает данные из Oracle DB и создает excel с таким количеством данных без каких-либо проблем.

Есть ли какие-либо ограничения для адаптера данных/считывателя Oledb?. Оракул-ридер работает, что основная нагрузка.

1 Ответов

Рейтинг:
2

Richard MacCutchan

Подумайте о попытке записать такое количество данных на двух листах бумаги. У вас скоро кончится пространство.


venky_CodeProject

Привет,

Я понял, к чему ты клонишь. Но в моем случае я должен разделить данные Excel с родительской папкой и соответствующими записями в качестве дочерних и подготовить для этого XML. XML имеет родительский узел папки, а дочерние узлы имеют документы, связанные с этой папкой.

Поэтому я читаю листы и загружаю данные в таблицу данных. Утилита извлечения работает и извлекает данные из Oracle DB и создает excel с таким количеством данных без каких-либо проблем.

Есть ли какие-либо ограничения для адаптера данных/считывателя Oledb?. Оракул-ридер работает, что основная нагрузка. Это не провал. Только мой инструмент терпит неудачу с Oledb data reader.

Richard MacCutchan

Нет, но есть ограничение на объем доступного пространства в памяти. Вам нужно обрабатывать данные в управляемых частях.