Форум программистов, компьютерный форум, киберфорум
C#: Базы данных
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.78/9: Рейтинг темы: голосов - 9, средняя оценка - 4.78
2 / 2 / 0
Регистрация: 05.12.2014
Сообщений: 39

DataReader медленное чтение

09.10.2015, 06:34. Показов 1998. Ответов 8
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Читаю данные с помощью DataReader из dbf файла -
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
OleDbCommand commDbf = new OleDbCommand("select * from list.dbf", connExcel);
                OleDbDataReader reader = commDbf.ExecuteReader();                  
           // 
            OleDbCommand db2Command = new OleDbCommand(string.Empty, connDb2);
            if (reader.HasRows)
                    while (reader.Read())
                    {
                    string bigStr = "Insert into myTable (/*тут 20 полей*/) VALUES ('" +
                           reader.GetValue(0).ToString() + "','" +
                            reader.GetValue(1).ToString() + "','" +
                             /*тут столбцы от 2 до 18 */
                              reader.GetValue(19).ToString() + "')";
                    db2Command.CommandText = bigStr;
                    db2Command.ExecuteNonQuery();
                    }
Но чтение и запись в таблице идет медленно (примерно 200 строк в секунду). Есть ли способы ускорить процесс.
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
09.10.2015, 06:34
Ответы с готовыми решениями:

Медленное чтение
Здравствуйте,это опять снова я.В этой теме я писал про проблему раскрутки шпинделя.Слава Богу подобной проблемы больше нет.Но я появилась...

Медленное чтение SQLite
Добрый день. Есть приложение с базой. Одна таблица(One) на 1300 записей, id каждой записи которой является ключем примерно для 3-х...

Слишком медленное чтение wstring из файла
Необходимо прочитать из файла некоторое количество строк(внутри них может содержаться всё что угодно: буквы цифры иероглифы). Строка...

8
478 / 241 / 74
Регистрация: 25.05.2012
Сообщений: 1,138
Записей в блоге: 1
09.10.2015, 14:12
Deanon, может сначала извлечь данные ридером и сформировать текст команды, а уж потом выполнять db2Command?
0
2 / 2 / 0
Регистрация: 05.12.2014
Сообщений: 39
10.10.2015, 03:42  [ТС]
А куда их извлечь? Если я буду извлекать их в datatable у меня будет outofmemory.
0
 Аватар для ksk
624 / 495 / 43
Регистрация: 05.07.2010
Сообщений: 1,589
10.10.2015, 07:43
Deanon,
Это больше похоже на медленную запись, чем на медленное чтение.
Попробуйте закомментарить строку db2Command.ExecuteNonQuery();
Сравните время. Тогда Вам будет более понятно, где искать проблему.

Цитата Сообщение от Deanon Посмотреть сообщение
А куда их извлечь? Если я буду извлекать их в datatable у меня будет outofmemory.
Если вставка данных происходит в SQLServer, то я бы извлекал в текстовый файл, а затем бы балкинсертил его в мутабле.
0
2 / 2 / 0
Регистрация: 05.12.2014
Сообщений: 39
10.10.2015, 12:48  [ТС]
База данных ibm Db2, закомментил запрос, теперь копируется быстро, но не знаю куда данные извлекать при чтении. Прочитал про bulk insert, но он вроде только для SQL Server.
0
478 / 241 / 74
Регистрация: 25.05.2012
Сообщений: 1,138
Записей в блоге: 1
10.10.2015, 12:55
Deanon, попробуйте объявить bigStr выше цикла while. И выполнение вставки db2Command тоже выполняйте вне цикла, ниже
0
2 / 2 / 0
Регистрация: 05.12.2014
Сообщений: 39
10.10.2015, 13:08  [ТС]
Я пробовал объявлять запрос выше, благо он не зависит от переменной i как в цикле for и выглядит точно таким же, как и в while, но все равно возникает ошибка "отсутствуют данные для строки или столбца". А насчет вставки после цикла - где мне хранить строки считанные в while для того чтобы их потом записать? Dbf весит 1 гб.
0
 Аватар для ksk
624 / 495 / 43
Регистрация: 05.07.2010
Сообщений: 1,589
10.10.2015, 15:12
Цитата Сообщение от Deanon Посмотреть сообщение
теперь копируется быстро
Теперь не копируется а читается быстро. Доказано, что проблемы не с чтением, а с записью в этот ДБ2. Там тормоза. Может быть индекс, может быть триггер (если там такое бывает). Но трабла именно там.
0
2 / 2 / 0
Регистрация: 05.12.2014
Сообщений: 39
10.10.2015, 16:33  [ТС]
Да, читается - неправильно написал. Всем спасибо за ответы, буду искать способы ускорения в документации бд.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
10.10.2015, 16:33
Помогаю со студенческими работами здесь

Внешний HDD WD Elements 25A2 медленное чтение
Всех приветствую ! В наличии WD Elements 25A2 объем 1Tb, отформатирован в файловой системе HFS+, MAC его видит в дисковой утилите, но...

Закрыть DataReader
Всем привет. Возникла проблема при изменении одной базы в SQL Server 2012. Собственно что нужно прописать, чтобы этот...

Вопрос по DataReader
Люди, хелп... :( try { conn.Open(); SqlDataReader readit =...

Асинхронный DataReader
Код работает, я так понимаю что он в новом потоке считывает по срочно записи и записывает в ListView. Тогда вопрос: Как оно может ...

Крашит DataReader
Крашит программу через минут 15 использования void tmr_Update_Tick(object sender, EventArgs e) { if (start_search...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Новые блоги и статьи
Программный контроль заполнения реквизита табличной части документа
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: реализовать контроль заполнения реквизита табличной части. . .
wmic не является внутренней или внешней командой
Maks 02.04.2026
Решение: DISM / Online / Add-Capability / CapabilityName:WMIC~~~~ Отсюда: https:/ / winitpro. ru/ index. php/ 2025/ 02/ 14/ komanda-wmic-ne-naydena/
Программная установка даты и запрет ее изменения
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: при создании документов установить период списания автоматически. . .
Вывод данных в справочнике через динамический список
Maks 01.04.2026
Реализация из решения ниже выполнена на примере нетипового справочника "Спецтехника" разработанного в конфигурации КА2. Задача: вывести данные из ТЧ нетипового документа. . .
Программное заполнения текстового поля в реквизите формы документа
Maks 01.04.2026
Алгоритм из решения ниже реализован на нетиповом документе "ВыдачаОборудованияНаСпецтехнику" разработанного в конфигурации КА2, в дополнении к предыдущему решению. На форме документа создается. . .
К слову об оптимизации
kumehtar 01.04.2026
Вспоминаю начало 2000-х, университет, когда я писал на Delphi. Тогда среди программистов на форумах активно обсуждали аккуратную работу с памятью: нужно было следить за переменными, вовремя. . .
Идея фильтра интернета (сервер = слой+фильтр).
Hrethgir 31.03.2026
Суть идеи заключается в том, чтобы запустить свой сервер, о чём я если честно мечтал давно и давно приобрёл книгу как это сделать. Но не было причин его запускать. Очумелые учёные напечатали на. . .
Модель здравосоХранения 6. ESG-повестка и устойчивое развитие; углублённый анализ кадрового бренда
anaschu 31.03.2026
В прикрепленном документе раздумья о том, как можно поменять модель в будущем
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru