Страницы: 1
RSS
Как объединить 27000 файлов для поиска по содержимому
 

Всем привет

Возникла несколько месяцев назад задача, периодически пытался решить её различными подходами, на данный момент ни одна из попыток не дала желаемого результат, решил-таки обратится к сообществу.
Итак по-порядку.

По работе(сметное дело) постоянно обращаюсь к старым сметам в поисках нужной расценки, хорошая новость - все сметы имеют формат .xls либо .xslx, плохая - файлов смет очень много ≈ 27000 шт(все в одной директории). Что я перепробовал: встроенный поиск в папке(Windows 8, Ctrl+F), встроенный поиск через Win+F, Total Commander, макросы поиска (макрос).
Все вышеописанные варианты итогом выдают список файлов(кроме макроса, но у него и скорость ниже всех), или работают некорректно, и это минус, так как таких запросов приходится делать очень много, а списки результатов исчисляются десятками.
В общем идеальный поиск по базе, я видел как встроенный поиск в книге Excel. поэтому попробовал объединить хотя бы 300 файлов в книгу, макросом конечно, всё шло хорошо, заняло не так много времени, сохранил-закрыл, а открыть уже не получилось, хотя компьютер не слабый. Смотрел в сторону формата .csv, но там теряется форматирование, а мне важно его сохранить так как есть свой нюанс, во многих файлах выпускаемых сметной программой тысячи скрытых строк(пытался удалять макросом, очень долгий процесс даже для одной сметы).

В общем у меня больше нет вариантов, как организовать быстрый поиск по 27000 файлов. Если у кого-нибудь есть идеи - подскажите.

Файл сметы для примера
Изменено: Дмитрий_DimAs - 02.02.2019 20:08:28 (Добавил ссылку на файл)
 
Посмотрите внимательно на "Параметры индексирования" Windows. Файлы с расширением xls и xls* должны индексироваться по содержимому. Добавьте свою "сметную" директорию к списку индексируемых расположений.
Владимир
 
По сообщению - нужен поиск, по названию темы - объединение... Что нужно?
1 048 576 / 27 000 - в среднем не более 38 строк в одном файле... А в показанной смете более 1000 строк
 
sokol92, Владимир, не спасет. Я так понял, с поиском файлов система справляется, но выдает множество результатов, где встретилось искомое.

Дмитрий_DimAs, ничего нормального на ум не приходит,  кроме как импорта данных смет в нормальную базу, пусть даже MDB, куда попадет заголовок со ссылкой на сам файл сметы и детали. по этим данным можно быстро искать, и, в случае необходимости, открыть нужный файл.
Изменено: БМВ - 02.02.2019 20:08:48
По вопросам из тем форума, личку не читаю.
 
Цитата
БМВ написал: с поиском файлов система справляется
Так можно и уточнить поиск. По-моему, универсальные системы индексирования текстов всегда лучше "доморощенных". Не знаю, как Win8, а Win10 неплохо индексирует.
Изменено: sokol92 - 02.02.2019 20:13:26
Владимир
 
Цитата
Дмитрий_DimAs написал:
во многих файлах выпускаемых сметной программой
Я так понимаю, сметная программа использует базы данных в работе, может копать в этом направлении?
 
Цитата
sokol92 написал: Посмотрите внимательно на "Параметры индексирования" Windows... Так можно и уточнить поиск.
Смотрел/делал, согласен - встроенный поиск, по содержимому, в проиндексированных директориях невероятно быстрый, но он выдаёт, как верно подметил БМВ, список результатов, которых может быть десятки и сотни. Также, у данного поиска есть слабое место - разделительные знаки(дефис, запятая, точка), даже заключение в двойные кавычки(которые якобы должны помочь) - не помогает, он ищет всё что до разд-го знака и после.

Цитата
Alec Perle написал:  сметная программа использует базы данных в работе, может копать в этом направлении?
Там довольно мудрёно организованно, находил некие файлы формата .dbx, но извлеченные из них данные сложно назвать сметой)

Цитата
БМВ написал: ничего нормального на ум не приходит,  кроме как импорта данных смет в нормальную базу...
Я конечно смотрел в эту сторону, но ничего путнего не нашёл, киньте ссылку как это делается, если есть.

Цитата
vikttur написал:  в среднем не более 38 строк в одном файле... А в показанной смете более 1000 строк
И это ещё не самая большая смета! Идеальный поиск, имхо, аналог родному, поэтому я и пытаюсь найти пути объединения в один файл, на листе да миллион строк, но ведь ещё есть рядом место) и соседние листы. Макрос который объединяет информацию с указанных листов в один(тупо копирует инфу со всех листов и вставляет её под последней заполненной строкой на первом листе):
Код
Sub UnionPages()For L = 2 To Sheets.Count
Sheets(L).Range("A1:Z" & Sheets(L).UsedRange.Rows.Count + 1).Copy Sheets(1).Range("A" & Sheets(1).UsedRange.Rows.Count)
Next
End Sub
В принципе, если долго мучится, этим макросом можно сделать что-то примерно похожее на моё видение) Но перед этим необходимо очистить от скрытых строк все файлы, количество скрытых строк в файле примера - 3000 из почти 4000.
Изменено: Дмитрий_DimAs - 03.02.2019 12:00:43
 
Цитата
Дмитрий_DimAs написал:  ведь ещё есть рядом место) и соседние листы.
"На разных листах" - мало чем отличается от "в разных книгах". Загрузится файл большим объемом и загнется  :)

Цитата
Идеальный поиск, имхо, аналог родному, поэтому
Отобрать только нужные данные. Если и при этом остается большой объем, составить какой-то каталог, список, метки... непонятно, что, так как непонятна задача.
 
Цитата
Дмитрий_DimAs написал:
обращаюсь к старым сметам в поисках нужной расценки
- и этих расценок 27000*38 штук?
Наверняка нет. Вероятно можно сделать базу этих расценок, один раз ночью прошерстив все эти тысячи, а затем периодически добавлять в базу новые, если появятся.
 
в заголовке темы
обьединить 27тыс. файлов
в тексте сообщения:
найти нужную расценку в 27тыс. файлов
а что нужно-то? обьединить или найти?

все, кто видел ЕНиРы помнит их количество и обьемы каждой книги должны понимать, что этот обьем данных не для листа Excel и даже не для книги Excel, т.е. сохранить все в одной книге не проблема, а вот пользоваться ею - одно расстройство, а при неустойчивой психике - можно и монитор разбить клавиатурой и мышь забросить дальше, чем позволяет провод, соединяющий ее с компьютером.
фраза:
Цитата
Дмитрий_DimAs написал:
Смотрел в сторону формата .csv, но там теряется форматирование
подсказывает, что в сторону Access смотреть тоже бесполезно - потеряем форматирование((
обращаясь обратно к ЕНиРам - там все было строго структурировано, по томам, по разделам, по видам, до конечных конкретных опреций

вижу такой выход (нужно "проиндексировать" эти 27 тыс.файлов)
1.
создаете 1 файл стправочник в котором 27тыс строк, каждая строка содержит
1.1.Начальный № расценки
1.2.Название книги
2.
или добавляете в этот файл еще один лист с произвольным количество строк:
2.1.Наименование работы (расценки)
2.2.Название книги
Изменено: Ігор Гончаренко - 03.02.2019 15:27:01
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!
Страницы: 1
Наверх