Показать полную графическую версию : Батник для подсчета информации из логов
vision-d
23-12-2013, 15:46
Такой вопрос - если в строке set sDocumentID= идет перечисление например тех же номеров документа через запятую ,
что нужно тогда указывать в WHERE AND [Document ID] = '%sDocumentID%
Если запускаю так как есть, то процесс просто заканчивается.
@echo off
setlocal enableextensions enabledelayedexpansion
set sSourceFile=C:\Users\nadeykinDA\Desktop\document_statistics.txt
set sFromDateTime=2013-05-05
set sToDateTime=2013-12-15
set sDocumentID=/rsl01002000000/rsl01002738000/rsl01002738582/rsl01002738582.pdf
, /rsl01002000000/rsl01002745000/rsl01002745687/rsl01002745687.pdf
"%ProgramFiles%\Log Parser 2.2\LogParser.exe" "SELECT Field4 AS [Document ID], C
OUNT([Document ID]) AS [Total] USING TO_TIMESTAMP(STRCAT(STRCAT(Field1, ' '), Fi
eld2),'yyyy-MM-dd hh:mm:ss.ll') AS Date INTO DATAGRID FROM '%sSourceFile%' WHERE
Field3 = 'open' AND [Document ID] = '%sDocumentID%' AND TO_TIMESTAMP('%sFromDat
eTime%', 'yyyy-MM-dd') <= Date AND TO_TIMESTAMP('%sToDateTime%', 'yyyy-MM-dd') >
= Date GROUP BY [Document ID] ORDER BY Total DESC" -i:TSV -iSeparator:space -hea
derRow:OFF -nSkipLines:2 -iTsFormat:"yyyy-MM-dd hh:mm:ss.ll" -iCodepage:1251 -st
ats:OFF -rtp:-1
endlocal
exit /b 0
если в строке set sDocumentID= идет перечисление например тех же номеров документа через запятую , »
Через точку с запятой. Значения — обрамить апострофами.
что нужно тогда указывать в WHERE AND [Document ID] = '%sDocumentID% »
set sDocumentID='rsl1@005085351'; 'rsl1@003461496'; 'rsl1@004665301'
…
… WHERE [Document ID] IN (%sDocumentID%) …
vision-d
23-12-2013, 16:50
Что-то не получается...
C:\Program Files\Log Parser 2.2>@echo off
setlocal enableextensions enabledelayedexpansion
set sSourceFile=D:\Script\StatDocsView3kv.txt
set sFromDateTime=2013-08-05
set sToDateTime=2013-08-15
set sDocumentID='rsl1@005085351'; 'rsl1@003461496'; 'rsl1@004665301'
"%ProgramFiles%\Log Parser 2.2\LogParser.exe" "SELECT Field2 AS [Document ID], C
OUNT([Document ID]) AS [Total] USING Field1 AS Date INTO DATAGRID FROM '%sSource
File%' WHERE [Document ID] IN '%sDocumentID%' AND TO_TIMESTAMP('%sFromDateTime%'
, 'yyyy-MM-dd') <= Date AND TO_TIMESTAMP('%sToDateTime%', 'yyyy-MM-dd') >= Date
GROUP BY [Document ID]" -i:TSV -iSeparator:tab -headerRow:OFF -iTsFormat:"yyyy-M
M-dd hh:mm:ss.ll" -iCodepage:65001 -stats:OFF -rtp:-1
Error: Syntax Error: <content>: no valid content: expecting opening parenthesis
instead of token '''rsl1@005085351';'
endlocal
exit /b 0
Что-то не получается... »
Сравните:
WHERE [Document ID] IN (%sDocumentID%) »
и:
WHERE [Document ID] IN '%sDocumentID%' »
Зачем там апострофы вместо скобок?! Об этом и написано в:
Error: Syntax Error: <content>: no valid content: expecting opening parenthesis instead of token '''rsl1@005085351';' »
Пробуйте:
@echo off
setlocal enableextensions enabledelayedexpansion
set sSourceFile=E:\Песочница\0336\StatDocsView3kv.txt
set sFromDateTime=2013-08-05
set sToDateTime=2013-08-15
set sDocumentID='rsl1@005085351'; 'rsl1@002772826'; 'rsl1@004665301'
"%ProgramFiles%\Log Parser 2.2\LogParser.exe" "SELECT Field2 AS [Document ID], COUNT([Document ID]) AS [Total] USING Field1 AS Date INTO DATAGRID FROM '%sSourceFile%' WHERE [Document ID] IN (%sDocumentID%) AND Date BETWEEN TO_TIMESTAMP('%sFromDateTime%', 'yyyy-MM-dd') AND TO_TIMESTAMP('%sToDateTime%', 'yyyy-MM-dd') GROUP BY [Document ID]" -i:TSV -iSeparator:tab -headerRow:OFF -iTsFormat:"yyyy-MM-dd hh:mm:ss.ll" -iCodepage:65001 -stats:OFF -rtp:-1
endlocal
exit /b 0
vision-d
24-12-2013, 09:54
Прошу прощения, не доглядел....
vision-d
24-12-2013, 12:18
Есть ещё вот такая надобность. Есть дополнительный файл с id пользователей. Id указаны в основном файле в самом конце. Нужно чтобы скрипт искал кол-во распечаток документов сделанные пользователями из дополнительного файла. Сортировка ID Документа и Total
Я написал так, но это не правильно....
C:\Program Files\Log Parser 2.2>@echo off
setlocal enableextensions enabledelayedexpansion
set sSourceFile=C:\Users\nadeykinDA\Desktop\document_statistics.txt
set sSourceFile2=C:\Users\nadeykinDA\Desktop\qqq.txt
set sFromDateTime=2013-05-05
set sToDateTime=2013-12-15
set sDocumentID=
"%ProgramFiles%\Log Parser 2.2\LogParser.exe" "SELECT Field4 AS [Document ID], C
OUNT([Document ID]) AS [Total] USING TO_TIMESTAMP(STRCAT(STRCAT(Field1, ' '), Fi
eld2),'yyyy-MM-dd hh:mm:ss.ll') AS Date INTO DATAGRID FROM '%sSourceFile%' WHERE
Field3 = 'print' AND Field1 FROM '%sSourceFile2%' = Field8 INTO DATAGRID FROM '
%sSourceFile%' AND TO_TIMESTAMP('%sFromDateTime%', 'yyyy-MM-dd') <= Date AND TO_
TIMESTAMP('%sToDateTime%', 'yyyy-MM-dd') >= Date GROUP BY [Document ID] ORDER BY
Total DESC" -i:TSV -iSeparator:space -headerRow:OFF -nSkipLines:2 -iTsFormat:"y
yyy-MM-dd hh:mm:ss.ll" -iCodepage:1251 -stats:OFF -rtp:-1
Error: Syntax Error: <term1>: AND operator not followed by a valid <term1>: nea
r 'Field1'
endlocal
exit /b 0
Помогите пожалуйста разобраться...
vision-d, фокус, скорее всего, не удастся. LogParser работает с одним источником данных (точнее — может и с несколькими, но однотипными). Иногда можно попытаться сделать «финт ушами» вида «SELECT Field11, Field12, … FieldN FROM Source1 WHERE Field11, Field12 IN (SELECT Field21, Field22 FROM Source2)».
Можно будет попробовать OLEDB Text Driver. Как обычно: выкладываете файлы и пишете, что и как требуется извлечь. А я посмотрю, что можно будет сделать. К сожалению, на содержимое файлов при использовании данной технологии накладывается гораздо больше ограничений, нежели при использовании LogParser.
vision-d
24-12-2013, 16:55
Хотелось бы сделать чтобы для начала log parser находил в документе (http://yadi.sk/d/GjBZj24nErXXa) id из room 214 допустим. далее соберу нужную информацию
@echo off
setlocal enableextensions enabledelayedexpansion
set sSourceFile=E:\Песочница\0336\user.txt
set sRoom=214
"%ProgramFiles%\Log Parser 2.2\LogParser.exe" file:"Query - ID by Room.sql"?SourceFile=%sSourceFile%+Room=%sRoom% -i:TSV -iSeparator:space -headerRow:ON -iCodepage:1251 -stats:OFF -rtp:-1
endlocal
exit /b 0
Query - ID by Room.sql:
SELECT id
INTO DATAGRID
FROM '%SourceFile%'
WHERE room = %Room%
Или напрямую:
@echo off
setlocal enableextensions enabledelayedexpansion
set sSourceFile=E:\Песочница\0336\user.txt
set sRoom=214
"%ProgramFiles%\Log Parser 2.2\LogParser.exe" "SELECT id INTO DATAGRID FROM '%sSourceFile%' WHERE room = %sRoom%" -i:TSV -iSeparator:space -headerRow:ON -iCodepage:1251 -stats:OFF -rtp:-1
endlocal
exit /b 0
vision-d
24-12-2013, 21:49
Error: Log row too long
тут уже где-то в реестре нужно менять параметр вроде..
На выложенном Вами файле у меня подобного не наблюдалось.
Впрочем, попробуйте: How to Fix: Log Parser – Log Row Too Long - 250 Hello - Site Home - TechNet Blogs (http://blogs.technet.com/b/rmilne/archive/2012/07/05/how-to-fix-log-parser-log-row-too-long.aspx).
vision-d
25-12-2013, 10:41
Тот файл 36 гигов весит, я его сократил..
vision-d
25-12-2013, 11:11
Впрочем, попробуйте: How to Fix: Log Parser – Log Row Too Long - 250 Hello - Site Home - TechNet Blogs. » Уже пробовал, но без результатно. Там формат csv, а у нас txt может поэтому...
Тот файл 36 гигов весит »
А упакованный с максимальным размером словаря и принудительно выставленным параметром «Сжатие текста» (речь про RAR)?
vision-d
25-12-2013, 11:38
Нет, это txt
http://yadi.sk/d/x4-J98ZXEu67W
это оригинальный кусок лога. Может можно как-то отсеч ненужные столбцы?
Нет, это txt »
Вот я и спрашиваю, сколько займёт:
упакованный с максимальным размером словаря и принудительно выставленным параметром «Сжатие текста» (речь про RAR)? »
http://yadi.sk/d/x4-J98ZXEu67W
это оригинальный кусок лога. »
Там что-то непонятное с кодировкой. UTF-8 с BOM был открыт как OEM/866 и вновь сохранён как UTF-8 с BOM. Полагаю, так Вы вырезали. Нужен оригинальный лог.
vision-d
25-12-2013, 12:55
ответил в личку
Получил, но:
Ничего не найдено
Возможно, владелец удалил файлы
или закрыл к ним доступ.
А может быть, вам досталась ссылка с опечаткой.
vision-d, загрузил, но возникла одна небольшая проблема: у меня нет ни 36, ни 34 свободных гигабайт :(. Буду думать.
vision-d
25-12-2013, 22:15
Извлек нужную информацию. файл разбирать не требуется...
вышлю в личку.
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.