Форум: "Основная";
Текущий архив: 2004.09.05;
Скачать: [xml.tar.bz2];
ВнизПарсинг текстовых файлов Найти похожие ветки
← →
alexts (2004-08-19 20:43) [0]Доброго времени суток.
Есть. например, счет, в текстовом файле, выгруженный из учетной системы к базе данных которой нет доступа.
Посоветуйте как парсить
Заранее всем спасибо!!!
← →
KSergey © (2004-08-19 20:52) [1]Ну как.. Как обычно
Выделять стандартные имеющиеся в нем куски, среди ни и искать то, что меняется...
Пригодятся ф-ции работы с файлами, а так же Pos.
← →
Rouse_ © (2004-08-19 21:14) [2]Не сочти за стеб, но это аналог: есть какаято фигня, как сделать конфетку?...
ЗЫ: Вообщето желательно прежде чем задать вопрос разобраться хотябы в азах парсинга и иметь представление о сути вопроса...
ЗЗЫ: Главный элемент - ключевое поле, которое может быть представленно абсолютно любым способом, но должно быть тебе заранее известно...
← →
alexts (2004-08-20 10:39) [3]Я имел ввиду, какие вы используете для этого средства, компоненты, алгоритмы. ИМХО построчное чтение из файла и разбор по словам не очень гуд. Может есть какието приемы которые позволили сократить ресурсы на обработку.
Спасибо
← →
Digitman © (2004-08-20 10:46) [4]
> alexts (20.08.04 10:39) [3]
если текст этот можно без проблем импортировать, например, в раб.лист Excel (т.е. формат выгруженных в текст.файл позволяет это сделать без особого геморроя), то и парсинг никакой не нужен - все уже по сути готово, Excel сам все сделает, останется только прочитать из интересующих ячеек интересующие значения
← →
KSergey © (2004-08-20 10:55) [5]> [3] alexts (20.08.04 10:39)
Невозможно импортировать файл не прочитав его ;)
Так что других средств нет.
>[4] Digitman © (20.08.04 10:46)
Ну, в принципе не плохо (с точки зрения затраты ресурсов на нажатие кнопок при набивании проги). Но вот с точки зрения ресурсов при импорте... ;)
← →
Digitman © (2004-08-20 11:04) [6]
> KSergey © (20.08.04 10:55) [5]
> Но вот с точки зрения ресурсов при импорте... ;)
ну автор же молчит как партизан, не желая раскрывать тайну о том, как часто и при каких условиях требуется осуществлять экспорт/импорт ..)
← →
alexts (2004-08-20 11:38) [7]задача следующаю:
нам присылают, по email счета которые нужно печатать,
происходит это 1 раз в месяц, кол-во счетов около 200000
формат файла текст для печати(с псевдографикой), т.е. никаких раделителей между данными нет, написали программу которая разберает по словам файл и затягивает в базу, оттуда выгружаем ф FastReport нормальные печатные формы и печатаем. Весь процесс от недели до 10 дней. Загрузка данных гдето 40 часов. Вот и думаю может есть какие алгоритмы которые позволят это делать пошустрее
← →
Digitman © (2004-08-20 11:51) [8]псевдографика, говоришь ? .. мда... тогда дело хреново, Эксел здесь не помощник, разумеется ..
> написали программу которая разберает по словам файл и затягивает
> в базу
где в этой цепочке узкое место ? обязательно ли вообще "затягивание в базу" ? может здесь и есть узкое место из-за неэффективного алгоритма работы с СУБД ?
← →
alexts (2004-08-20 13:28) [9]думаю что в БД тянуть обязательно, я думаю что с БД работаю эффективно, много времени уходит на разбор файла, есть файлы рамером около 3Мб, поэтому интересует, именно, алгоритмы разбора текста
Спасибо
← →
Думкин © (2004-08-20 13:29) [10]> [9] alexts (20.08.04 13:28)
> думаю что в БД тянуть обязательно, я думаю что с БД работаю
> эффективно, много времени уходит на разбор файла, есть файлы
> рамером около 3Мб,
3 Мб - долго? Можно некоторые избранные места?
← →
alexts (2004-08-20 13:37) [11]>3 Мб - долго? Можно некоторые избранные места?
Да в томто и дело что нет интерес представляет вся инфа в файле
← →
Digitman © (2004-08-20 13:46) [12]
> alexts (20.08.04 13:37) [11]
приведи сюда фрагмент текста их такого файла - шапка, табл.часть, подвал ...
всю табличную часть приводить необязательно, из нее достаточно пары строк
← →
Думкин © (2004-08-20 13:54) [13]> [11] alexts (20.08.04 13:37)
Избранные места - я имел ввиду как с текстом работа идет. Может и хорошо все, но иногда попадается - когда delete посимвольно применяют или s := s + a миллионы раз. :)
← →
alexts (2004-08-20 14:18) [14]Вот пример файлика:
СЧЕТ-ФАКТУРА № 21243234
Счет клиента : 23432432, абонент 34634645
парпарпав
Дата : 01-08-2004 00:00:00
ОСТАТОК НА : 01-07-2004 00:00:00 167.79 ГРН КРЕДИТ
Поступившие платежи :
авансовые 0.00 ГРН
дилерам 0.00 ГРН
СтарТайм 150.00 ГРН
Корректировки платежей 0.00 ГРН
---------------------------------------------------------------------------------------
Итого: 150.00 ГРН
Начислено за период:
ежемесячная абонентская плата 16.88 ГРН
исходящие внутри сети 56.71 ГРН
исходящие местные,междугородние звонки 122.64 ГРН
услуги текст 6.18 ГРН
исходящие внутри закрытой абонентской группы 6.36 ГРН
---------------------------------------------------------------------------------------
Итого (без налогов) : 208.77 ГРН
ПФ 12.53 ГРН
НДС 41.76 ГРН
---------------------------------------------------------------------------------------
Итог (со всеми налогами): 263.06 ГРН
---------------------------------------------------------------------------------------
Всего : 263.06 ГРН
ОСТАТОК НА : 01-08-2004 00:00:00 54.73 ГРН КРЕДИТ
Сумма авансового платежа 300.00 ГРН
Внимание! При заполнении платежного поручения на авансовый платеж
в графе "Назначение платежа" следует писать:
"Оплата за услуги связи на л/с:437563 абонент : 465327"
---------------------------------------------------------------------------------------
аврппараврпарвпарп
паврпарпаврпрпа
Платежные реквизиты:
т/с 4564565463654
трататататататататат
МФО 436563, ЕДРПОУ 46543737 #6734534
т/с 5485487438743
трататататататататат трататататататататат
МФО 324537, ЕДРПОУ 32645237 Адрес кв. х
Город
Для аб.блявора р-на:
т/с 3427636734743 х
такомто банке, МФО 32564623 437672
← →
ЮрийК © (2004-08-20 14:18) [15]CreateFileMapping
MapViewOfFile
Ищи по этим словам темы, где это уже обсуждалось
← →
Андрей Сенченко © (2004-08-20 14:19) [16]Digitman © (20.08.04 13:46) [12]
На самом деле на Ехеле свет клином не сошелся.
Значительно важнее другое - наличие слов "псевдографика" и "счета" на мой взгляд предполагает наличие ДОСовского приложения, которое эти самые счета с псевдографикой гонит в файлы.
Осталось посмотреть эту самую ДОСовскую программу - размеры выводимых полей в таких программах обычно прошиты очень жестко, что позволяет построить встречный жесткий парсер по POS-ам или четко определенным символам псевдографики.
← →
Digitman © (2004-08-20 14:24) [17]
> Андрей Сенченко © (20.08.04 14:19) [16]
> размеры выводимых полей в таких программах обычно прошиты
> очень жестко
в табличной части - да, скорей всего ... в этом-то и хотелось убедиться ..
← →
alexts (2004-08-20 14:25) [18]
> Digitman © (20.08.04 13:46) [12]
Абсолютно верно!!! Так и есть, так и сделано!!! Интересует сам подход, т.е. мне не нравится пословное чтение и сравнение, хочу так например: создал матрицу-шаблон, загнал туда из файла шаблон, наложил на файл получил данные. Как ВАМ такая идея?
PS. матрица имеется ввиду двумерный массив
← →
[lamer]Barmaglot © (2004-08-20 14:37) [19]Е-мое... Насколько я понимаю проблема не в скорости считывания файла с диска, скорее всего он все равно записывается в память (ты же не закрываешь файл после каждой записи?) проблема в скорости сравнения имеющегося шаблона с записью в файле. А тут тебе массивы не помогут...Я бы посмотрел более быстрые версии сравнения и сортировки...
← →
SergP © (2004-08-20 14:42) [20]Может проще задействовать какую-нить библиотеку для работы с регулярными выражениями?
← →
alexts (2004-08-20 16:57) [21]Ладно, я понял что эта тема для обсуждения не на форуме, а за пивом.
Всем спасибо огромное.
← →
Андрей Сенченко © (2004-08-20 18:46) [22]alexts (20.08.04 16:57) [21]
Понимаешь, изначально Твой вопрос заключался лишь в "Как парсить"
Лично я в Твоем конкретном случае простро создал бы Record и проходя по файлу постепенно заполнял бы его поля. Структура фала, при которой строки с одинаковыми порядковыми номерами однозначно содержат одну и туже информацию ( причем для некоторых данных можно заведомо объявлять типы String[10] или byte например) вполне позволяет это сделать.
Но если нужно еще и сокращение ресурсов на выборку - это сложнее. Ибо нужно исходить уже не только из структуры файлов, но и частоты и способов их получения. Тут могут быть свои хитрости
← →
Mim1 © (2004-08-20 20:02) [23]Всетаки у вас на разбор файла из
> [14] alexts (20.08.04 14:18)
размером 3 мб уходит 40 часов? :) Кул.
Давайте я вам сделаю так что это за 20 минут и разберется и в отчет загонется на среднем компе.
← →
Андрей Сенченко © (2004-08-20 20:09) [24]Mim1 © (20.08.04 20:02) [23]
3 метра за 20 минут ?
Имеется в виду средняя XT-шка ?
← →
Mim1 © (2004-08-20 20:32) [25]Думается что средний комп это чтото вроде гигагерцового P3. :)
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2004.09.05;
Скачать: [xml.tar.bz2];
Память: 0.52 MB
Время: 0.041 c