![]() |
![]() |
![]() |
|
Чтение больших текстовых файлов | ☑ | ||
---|---|---|---|---|
0
abjurer
20.08.08
✎
11:55
|
Собственно есть у кого мысль как прочитать быстро большой текстовый файл? Файл около 400 метров. Нужно имея подстроку поиска найти строку с максимальным номером строки, содержащую эту подстроку, и вывести ее в табличный документ 1С (или в окно сообщений - не важно).
Пробовал объект "Текст" - Out of memory. Последовательное чтение через AddIn.V7TextFile и Scripting.FileSystemObject - дело долгое (по прикидкам весь файл они пройдут за час. Очень хочется побыстрее. Сие возможно? |
|||
1
jbond
20.08.08
✎
12:00
|
||||
2
jbond
20.08.08
✎
12:02
|
||||
3
abjurer
20.08.08
✎
12:23
|
(1) я же писал, что последовательное чтение через AddIn.V7TextFile и Scripting.FileSystemObject медленно
(2) и как запустить сие чудо? скачал. третью dll уже хочет и жалится на неправильную установку. |
|||
4
abjurer
20.08.08
✎
12:31
|
все. расправился с грепом. спасибо :)
|
|||
5
Андрюха
20.08.08
✎
12:36
|
Как вариант, можно по ОЛЕ открыть файл в Word и от туда его лохматить
|
|||
6
Armando
20.08.08
✎
12:43
|
Если файл имеет структуру, то почему бы его не конвертить в dbf, например, или xls. И долбать запросом.
|
|||
7
jbond
20.08.08
✎
12:45
|
(6) - тогда уж лучше к текствым файлам CSV/TSV
|
|||
8
jbond
20.08.08
✎
12:46
|
(3) - где бы нормальный фронтенд достать к нему - вот это посерьезнее вопросик
|
|||
9
Armando
20.08.08
✎
12:47
|
(7) да пох во что. все равно быстрее должно быть.
|
|||
10
big
20.08.08
✎
12:56
|
(0) через FSO файл 4Гб 2лохматится" за 40 минут. но на ВБА, 1С не тянет.
(5) Ворд "приседает" от 20 Мб, а тут 400 :) (6) конвертация займет времени даже больше. |
|||
11
smaharbA
20.08.08
✎
12:58
|
findstr - парсю логи по 17 гиг и не жужу...
а вообщето есть adodb |
|||
12
romix
модератор
20.08.08
✎
14:40
|
||||
13
romix
модератор
20.08.08
✎
14:44
|
В 1С возможно использование регулярных выражений для разбора строк:
RegExp = CreateObject("VBScript.RegExp"); RegExp.IgnoreCase = True; RegExp.Global = False; RegExp.Pattern = "<hr>"; Matches=RegExp.Execute(стр); Если Matches.Count()>0 Тогда Сообщить(""+Matches.Count()+"---"+стр); КонецЕсли; |
|||
14
romix
модератор
20.08.08
✎
14:59
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |