Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / C++ [игнор отключен] [закрыт для гостей] / Чтение и поиск в DAT файлах / 17 сообщений из 17, страница 1 из 1
23.07.2019, 20:43
    #39840731
argnis
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Чтение и поиск в DAT файлах
Добрый вечер, уважаемые форумчане!

Имеется множество .DAT файлов (около 50 000). В них записаны данные в следующем формате:
ДатаКатегорияНомерДоговора1Сумма
ДатаКатегорияНомерДоговора2Сумма
ДатаКатегорияНомерДоговора3Сумма
...........
Мне нужно в каждом DAT файле подсчитать итоговую сумму для некоторого диапозона категорий.
Я нашел 2 возможности:

С помощью OleDB
Код: c#
1.
2.
var query = "select * from file.dat";
var connection = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\\file.dat;Extended Properties=\"text;HDR=NO;FMT=FixedLength\"");



С помощью ReadToEnd
Код: c#
1.
2.
StreamReader sr = new StreamReader(Path);
string[] arr = sr.ReadToEnd().Split('\n');



Подскажите что будет быстрее? Или может использовать что-то другое?
...
Рейтинг: 0 / 0
23.07.2019, 20:52
    #39840732
PetroNotC Sharp
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Чтение и поиск в DAT файлах
argnis,
Обычные текстовые файлы?
Вестимо самому читать в оперативке складывать быстрее.
...
Рейтинг: 0 / 0
23.07.2019, 21:38
    #39840738
argnis
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Чтение и поиск в DAT файлах
PetroNotC SharpОбычные текстовые файлы?

Впринципе да, обычные файлы, просто streamreader их не распознает. И их очень много.
...
Рейтинг: 0 / 0
23.07.2019, 21:48
    #39840740
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Чтение и поиск в DAT файлах
Не всё, что выглядит как текстовые файлы, на самом деле ими является. Расширение DAT ни о
чём не говорит, оно используется по усмотрению разработчика. С которым тебе и следует
проконсультироваться по поводу их чтения.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
23.07.2019, 22:07
    #39840741
PetroNotC Sharp
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Чтение и поиск в DAT файлах
argnisPetroNotC SharpОбычные текстовые файлы?

Впринципе да, обычные файлы, просто streamreader их не распознает. И их очень много.так. Давай по порядку.
1. Скопируй сюда кусок содержимого файла.
...
Рейтинг: 0 / 0
23.07.2019, 22:08
    #39840743
PetroNotC Sharp
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Чтение и поиск в DAT файлах
Dimitry Sibiryakovвыглядитслово "выглядит" не раскрыто)
...
Рейтинг: 0 / 0
23.07.2019, 22:15
    #39840744
PetroNotC Sharp
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Чтение и поиск в DAT файлах
argnisstreamreader их не распознаеттогда вы рано завели тему.
Попробуйте ОДИН текстовый учебный прочитать.
А потом уже 50000 штук.
...
Рейтинг: 0 / 0
23.07.2019, 22:44
    #39840748
mayton
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Чтение и поиск в DAT файлах
argnis, расширение .DAT нам ни о чем не говорит. Есть бесконечно много
приложений которые как ни странно формируют это расширение но никак друг
с другом ни связаны. Когда работаешь с двоичными файлами - первым делом
надо посмотреть на них через призму hex-редактора.

Но если он действительно открывается драйвером Microsoft.Jet с опцией "text" то используй драйвер.
Это будет правильно.

Вторая фигня которая ниже возможно и будет работать но с расчётом сумм тебе придётся работать
вручную. Кроме того неясно что ты будешь делать когда размер DAT файла превысит твою доступную
виртуальную память. Если в случае с драйвером этот вопрос вынесен за скобки. Его решает драйвер
то во втором случае твоя самоделка в виде массива строк сломает тебе память.

Вобщем оба способа - разные и их нельзя сравнивать так примитивно.
...
Рейтинг: 0 / 0
24.07.2019, 10:42
    #39840822
MasterZiv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Чтение и поиск в DAT файлах
argnisПодскажите что будет быстрее? Или может использовать что-то другое?

В таких условиях бессмысленно думать, что будет быстрее.
Файлов мало, данных в них мало, С++ быстрый.
Думай о том, что будет удобнее и правильнее.
Я бы не связывался ни с какими библиотеками и драйверами, если это можно сделать на чистом ANCI C/C++
...
Рейтинг: 0 / 0
24.07.2019, 14:32
    #39840970
exp98
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Чтение и поиск в DAT файлах
Я за удобство программирования. По мне удобней SQL/
М.б. не это главная задача ТСа, а что-то сложнее. А м.б. даже у него кучка разных вычислений, и писать их все на чистом ++ будет муторно. А потом м.б. сопровождать ещё изменения ... кто-то другой будет без документации.

П.С. Но даже 50 тыс текстовых файлов можно в эксэле формулами сбацать )))
...
Рейтинг: 0 / 0
25.07.2019, 10:42
    #39841261
Anatoly Moskovsky
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Чтение и поиск в DAT файлах
MasterZivС++ быстрый.
Жалко что ТС C# собирается использовать ))
...
Рейтинг: 0 / 0
25.07.2019, 19:03
    #39841590
argnis
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Чтение и поиск в DAT файлах
Большое спасибо всем отписавшимся!

Сделал все по-простому через стримридер. Я там кодироку не ту выставил, поэтому сначало чушь выводило.

Правда читает долго. Там оказалось около 250 тыс файлов в 3 тыс каталогах. Причем в файле около 200 строк. Все файлы в ANCI и не шифрованы.

Но все-равно около 8-10 минут выходит.
...
Рейтинг: 0 / 0
25.07.2019, 19:04
    #39841592
mayton
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Чтение и поиск в DAT файлах
Покажи как сделал.
...
Рейтинг: 0 / 0
25.07.2019, 19:24
    #39841604
PetroNotC Sharp
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Чтение и поиск в DAT файлах
argnisНо все-равно около 8-10 минут выходит.потоки подключи
...
Рейтинг: 0 / 0
25.07.2019, 19:30
    #39841610
mayton
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Чтение и поиск в DAT файлах
250 000 файлов / 8 минут = 250 000 файлов / 480 сек = 520 файлов в секунду.

Неплохо но надо посмотреть какие монотонные действия выполняются перед каждым файлом.
Пулы парсеров и мультипоточка нам в помощь.
...
Рейтинг: 0 / 0
26.07.2019, 07:20
    #39841719
полудух
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Чтение и поиск в DAT файлах
argnisБольшое спасибо всем отписавшимся!

Сделал все по-простому через стримридер. Я там кодироку не ту выставил, поэтому сначало чушь выводило.

Правда читает долго. Там оказалось около 250 тыс файлов в 3 тыс каталогах. Причем в файле около 200 строк. Все файлы в ANCI и не шифрованы.

Но все-равно около 8-10 минут выходит.
а сколько файлов на диру?
...
Рейтинг: 0 / 0
26.07.2019, 07:23
    #39841720
полудух
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Чтение и поиск в DAT файлах
тьфу, вижу - 83
данные можно в БД запихнуть (любую) и оттуда их дёргать гораздо быстрее
...
Рейтинг: 0 / 0
Форумы / C++ [игнор отключен] [закрыт для гостей] / Чтение и поиск в DAT файлах / 17 сообщений из 17, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]