2011-05-11 5 views
1

Существует простой текстовый файл, который должен анализироваться с помощью парсера журнала. Просто я начал использовать парсер журнала, но не понял. Каков его лимит разбора. Я имею в виду Могу ли я сделать такую ​​вещь с помощью LogParserlog parser 2.2 query, синтаксический разбор текста и проверка

TextLine разобрать:

1022303Name  WXP3

Это я должен проанализировать как

Первая цифра 1 является номером строки
Следующая трехзначное 022 является ErrorNumber
следующая трехзначная цифра 303 is UserID
следующий десять char Name is UserName
next 4 char WXP3 is SystemName

Я не могу понять, можем ли мы сделать этот запрос из парсера журнала или нет ... Если да, то дайте какой-либо примерный запрос.

ЛЮБОЙ ДРУГОЙ ИНСТРУМЕНТ ВЫПОЛНИТЬ ЭТО САМЫЙ ПРИВЕТСТВОВАНО

ответ

5

Вы хотите функцию SUBSTR.

logparser -i:textline "select substr(text, 0, 1) AS RowName, substr(text, 1, 3) AS ErrorNumber, substr(text, 4, 3) AS UserId, substr(text, 7, 10) AS UserName, substr(text, 17, 4) AS SystemName from temp.txt 

Это предполагает, что длины действительно заданы для определенного размера.

temp.txt текст, используемый выше:

1022303Name1  WXP3 
1022303Name 2 WXP4 
1022303Name 3 WXP5 
1022303Name 4 WXP6 
1022303Name 5 WXP7 
1022303Name 6 WXP8 
1022303Name 7 WXP9 
1022303Name 8 WXPa 

Так как это было связано с прежде, я также укажет вам на Log Parser Plus, что я бежать, "и может иметь некоторую помощь с другой лог-анализатором функции.

+0

На всякий случай ... SUBSTR (текст для поиска, начальная позиция, символы для разбора), где начальная позиция основана на 0. –

+0

Thanx ... Я думаю, что это решит мою проблему. Еще один вопрос: можем ли мы проверять данные как числовой тип или тип текста? – PawanS

+0

Не то, чтобы я знал. Но вы могли бы использовать ROUND или TO_INT (вам нужно будет проверить, что он будет делать с нечисловой строкой) ... Однако я бы ожидал, что вы согласитесь, что сам файл журнала действителен (для Log Parser). Если приложение, создающее эти журналы, не выводит допустимые файлы журналов, это гораздо более серьезная проблема. –