Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Помогите распарсить файлик! / 11 сообщений из 11, страница 1 из 1
22.01.2015, 17:04
    #38860906
kostik88
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите распарсить файлик!
Имеется лог, вида
<

00000:00038:2014/07/08 14:40:36.37 Logon Login failed. User: vasia, Client IP address: '192.16.0.5'.
8:00000:00040:2014/07/08 14:46:51.33 Logon Login failed. User: ivanov, Client IP address: '192.20.1.107'.

>

Как распарсить строку, когда нету разделителей, и шаблоны не получается сделать, так как
в первой строке
00000:00038:
а уже во второй
8:00000:00040:

Ну и та же петрушка с IP-адресом, нету постоянной длинны, что ли .

в идеале хочется получить данные в таблице, вида:

<

2014/07/08 14:40:36.37 Logon Login failed. User: vasia 192.16.0.5
2014/07/08 14:46:51.33 Logon Login failed. User: ivanov 192.20.1.107

>

Модератор: Тема перенесена из форума "Microsoft SQL Server".
...
Рейтинг: 0 / 0
22.01.2015, 17:14
    #38860921
kostik88
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите распарсить файлик!
Парсить планировал средствами ms sql
...
Рейтинг: 0 / 0
22.01.2015, 18:02
    #38860987
DarkMaster
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите распарсить файлик!
kostik88,

1) Сначала строки до пробела - 8:00000:00040:2014/07/08, убрать из строки, оставив окончание
1а) Из полученной строки - с конца строки до двоеточия - твоя дата
2) Сначала строки до пробела - 14:40:36.37, убрать из строки оставив окончание
3) С конца строки до пробела - '192.16.0.5', убрать из строки, оставив начало
4) Все что осталось - Logon Login failed. User: vasia, Client IP address:

Т.е. по факту тебе нужны charindex(),reverse(),replace(),rigth(),left(),substring() - все в твоих руках.
...
Рейтинг: 0 / 0
22.01.2015, 18:43
    #38861040
F#
F#
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите распарсить файлик!
Что такое "Средствами MSSQL" - SSIS?

kostik8800000:00038:2014/07/08 14:40:36.37 Logon Login failed. User: vasia, Client IP address: '192.16.0.5'.

http://www.purplefrogsystems.com/blog/2011/07/pattern-matching-in-ssis-using-regular-expressions-and-the-script-component/

И регулярное выражение типа
Код: c#
1.
@"(^\S+):([^:]+) (\S+).*User: (\s+), Client IP address '(.*)'$"@
...
Рейтинг: 0 / 0
22.01.2015, 18:57
    #38861064
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите распарсить файлик!
Что вообще МОЖЕТ содержаться в строке? в каком месте? с какими разделителями? что может быть пропущено, а что нет? если есть полное знание по этим моментам - разделение на отдельные фрагменты такой строки совершенно элементарная вещь. Просто надо сформировать чёткие критерии определения, что есть ху, а потом закодить это. Но если формат таков, что при просмотре невозможно понять, чем является некий фрагмент строки - то и закодить это невозможно.

И вообще... что есть в твоём понимании "распарсить"? как ни странно, но из вопроса это неясно. А главное - непонятно, за каким хреном это делается и как потом используется.
...
Рейтинг: 0 / 0
22.01.2015, 19:19
    #38861096
mayton
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите распарсить файлик!
Костик ну что за билиберда - 00000:00038:

Как на нее написать регексп? Если мы не знаем что там может быть еще. Какие символы e.t.c.
...
Рейтинг: 0 / 0
22.01.2015, 19:24
    #38861106
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите распарсить файлик!
kostik88в идеале хочется получить данные в таблице, вида:

<

2014/07/08 14:40:36.37 Logon Login failed. User: vasia 192.16.0.5
2014/07/08 14:46:51.33 Logon Login failed. User: ivanov 192.20.1.107

>


Найти в строке фрагмент '2014'. Удалить всё что до него. Удалить из строки кавычки. И всё... делов-то. Можно даже регэкспы не учить, ограничиться строковыми функциями, коих надо ровно три штуки.
...
Рейтинг: 0 / 0
22.01.2015, 19:32
    #38861116
mayton
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите распарсить файлик!
Akinakostik88в идеале хочется получить данные в таблице, вида:

<

2014/07/08 14:40:36.37 Logon Login failed. User: vasia 192.16.0.5
2014/07/08 14:46:51.33 Logon Login failed. User: ivanov 192.20.1.107

>


Найти в строке фрагмент '2014'. Удалить всё что до него. Удалить из строки кавычки. И всё... делов-то. Можно даже регэкспы не учить, ограничиться строковыми функциями, коих надо ровно три штуки.
Занятие увлекательное.

А в тексте месседжа может встретится что угодно. В т.ч. и "User:"...
...
Рейтинг: 0 / 0
22.01.2015, 19:57
    #38861143
Изопропил
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите распарсить файлик!
kostik88,

Требуйте долива пива после отстоя пены спецификацию входных данных
...
Рейтинг: 0 / 0
22.01.2015, 20:49
    #38861167
kostik88
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите распарсить файлик!
Изопропил,

это уже отфильтрованный фрагмент лог-файла.
остальные строки содержат тоже самое, только с другими датами, логинами и ip, ну и время разное.
всё.
...
Рейтинг: 0 / 0
23.01.2015, 09:18
    #38861375
Dima T
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите распарсить файлик!
kostik88Парсить планировал средствами ms sql
ИМХУ неподходящий инструмент для данной задачи.

Проще написать на каком-нибудь алгоритмическом ЯП парсер, а результат его работы заливать в MS SQL, построчными insert`ами или пачками (bulk insert).
...
Рейтинг: 0 / 0
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Помогите распарсить файлик! / 11 сообщений из 11, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]