Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 ssis обработать лог файл  [new]
red_ifrit0
Member

Откуда:
Сообщений: 21
Подскажите как это лучше реализовать, может вообще не тот инструмент использую.
Есть файл с логом программы, в которую пишутся все события
фрагмент
+
2013-06-22T13:00:35.531 887331072: SKU_GROUP_MEMBER_INIT: Инициализация кеша иерархии групп товаров
2013-06-22T13:00:36.362 887331072: CLIENT_GROUP_MEMBER_INIT: Инициализация кеша иерархии групп клиентов
2013-06-22T13:00:36.640 887331072: CACHEPP_CREATE: Заполняем кеш: code_info_cnt_kind_units полей: 8 индексов: 2
[ 0.00 ]
2013-06-22T13:00:36.641 887331072: CACHEPP_CREATE: Заполняем кеш: pack_conds полей: 27 индексов: 1
[ 0.02 ]
2013-06-22T13:00:36.665 887331072: CACHEPP_CREATE: Заполняем кеш: dep_mt_messages полей: 2 индексов: 2
[ 0.00 ]
2013-06-22T13:00:36.666 887331072: CACHEPP_CREATE: Заполняем кеш: routing полей: 29 индексов: 1
[ 0.04 ]
2013-06-22T13:00:36.706 887331072: CACHEPP_CREATE: Заполняем кеш: routing_detail полей: 5 индексов: 1
[ 0.03 ]
2013-06-22T13:00:36.733 887331072: CACHEPP_CREATE: Заполняем кеш: routing_counters полей: 3 индексов: 1
[ 0.00 ]
2013-06-22T14:32:12.243 887331072: NEW_PICK_LIST: Создан пик-лист: 45722627 пик-деталь: 49619598 причина: [suppressing] [rcn] [205012] выдача: [R] статус: [O] приоритет: 90 из ячейки: 3649 в ячейку: 4664708 транзитная группа: 0 операция: CTN_FROM_CNT
% GC: gained 287,184+2,592 in 0.00 sec; used 24,136+1,616; free 57,784+47,536
2013-06-22T14:32:12.249 887331072: ADD_DEP: Задание: 45722627 стало зависеть от: 45722626 (45722626)

реально из всего этого счастья меня интересует только событие NEW_PICK_LIST: - структура у этого события фиксированная
хотелось бы дергать это событие в базу используя ssisю Это возможно? Лучше через построчное чтение и регулярки?
8 июл 13, 13:21    [14535491]     Ответить | Цитировать Сообщить модератору
 Re: ssis обработать лог файл  [new]
Jovanny
Member

Откуда:
Сообщений: 1196
Ещё можно
OPENROWSET
bcp
8 июл 13, 14:09    [14535912]     Ответить | Цитировать Сообщить модератору
 Re: ssis обработать лог файл  [new]
Ivan Durak
Member

Откуда: Minsk!!!
Сообщений: 3787
red_ifrit0
Это возможно? Лучше через построчное чтение и регулярки?

какие еще регулярки.
В ссис есть мощная штука называемая - Script task. С ее помощью такое распарсить будет эффективнее всего!
8 июл 13, 15:01    [14536364]     Ответить | Цитировать Сообщить модератору
 Re: ssis обработать лог файл  [new]
Jovanny
Member

Откуда:
Сообщений: 1196
Ivan Durak
red_ifrit0
Это возможно? Лучше через построчное чтение и регулярки?

какие еще регулярки.
В ссис есть мощная штука называемая - Script task. С ее помощью такое распарсить будет эффективнее всего!


Зачем такие сложности, если там плоский текстовый файл с разделителями?
8 июл 13, 15:05    [14536384]     Ответить | Цитировать Сообщить модератору
 Re: ssis обработать лог файл  [new]
Ivan Durak
Member

Откуда: Minsk!!!
Сообщений: 3787
Jovanny
Ivan Durak
пропущено...

какие еще регулярки.
В ссис есть мощная штука называемая - Script task. С ее помощью такое распарсить будет эффективнее всего!


Зачем такие сложности, если там плоский текстовый файл с разделителями?

это не сложности - это Best Practice.
Ну и что-то разделителей не вижу, и вообще число полей переменное
8 июл 13, 15:25    [14536565]     Ответить | Цитировать Сообщить модератору
 Re: ssis обработать лог файл  [new]
red_ifrit0
Member

Откуда:
Сообщений: 21
Ivan Durak
Ну и что-то разделителей не вижу, и вообще число полей переменное

В том и дело, что число полей переменное, заголовков полей нет(ну кроме моего события - там знаю). Не понимаю как можно обработать, выбирая только строки по фильтру

Ivan Durak
В ссис есть мощная штука называемая - Script task. С ее помощью такое распарсить будет эффективнее всего!

Пока не применял, это "Поток данный"- "Задача сценарий" -?
8 июл 13, 16:08    [14536974]     Ответить | Цитировать Сообщить модератору
 Re: ssis обработать лог файл  [new]
red_ifrit0
Member

Откуда:
Сообщений: 21
Поток управления - задача сценарий -пишу сценарий на с # Как-то так ?
8 июл 13, 16:17    [14537050]     Ответить | Цитировать Сообщить модератору
 Re: ssis обработать лог файл  [new]
Ivan Durak
Member

Откуда: Minsk!!!
Сообщений: 3787
red_ifrit0
Поток управления - задача сценарий -пишу сценарий на с # Как-то так ?

да это оно (русская студия зло)

автор
В том и дело, что число полей переменное, заголовков полей нет(ну кроме моего события - там знаю)

ну так тут вообще без вариантов, всякие bcp курят в сторонке
8 июл 13, 16:45    [14537291]     Ответить | Цитировать Сообщить модератору
 Re: ssis обработать лог файл  [new]
red_ifrit0
Member

Откуда:
Сообщений: 21
Что есть то и мучаю. :)
Если есть примеры с обработкой файла через сценарий, буду рад ссылке.
Спс.
8 июл 13, 16:50    [14537330]     Ответить | Цитировать Сообщить модератору
 Re: ssis обработать лог файл  [new]
qwerty112
Guest
red_ifrit0
...
реально из всего этого счастья меня интересует только событие NEW_PICK_LIST: - структура у этого события фиксированная
хотелось бы дергать это событие в базу используя ssisю Это возможно? Лучше через построчное чтение и регулярки?

а какой результат вы, вообще, хотите получить ? строка файла с этим NEW_PICK_LIST - как должна "распарсится" и "лечь" в таблицу ?
просто выбрать эти строки из файла - можно и обычным BULK INSERT, - что с этим всем дальше нужно сделать ?
create table #Haba (xz varchar(max))
go

BULK INSERT #Haba
   FROM 'C:\log.log'
   WITH 
      (
		CODEPAGE = 'ACP',
        fieldterminator='/n'
      )

select * from #Haba
where xz like '%NEW_PICK_LIST%'
go

drop table #Haba
go

(17 row(s) affected)
xz
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
2013-06-22T14:32:12.243 887331072: NEW_PICK_LIST: Создан пик-лист: 45722627 пик-деталь: 49619598 причина: [suppressing] [rcn] [205012] выдача: [R] статус: [O] приоритет: 90 из ячейки: 3649 в ячейку: 4664708 транзитная группа: 0 операция: CTN_FROM_CNT

(1 row(s) affected)
8 июл 13, 17:49    [14537711]     Ответить | Цитировать Сообщить модератору
 Re: ssis обработать лог файл  [new]
red_ifrit0
Member

Откуда:
Сообщений: 21
qwerty112,
от события мне нужна
дата -2013-06-22
номер пик-лист: 45722627
статус: [O]
9 июл 13, 07:29    [14539065]     Ответить | Цитировать Сообщить модератору
 Re: ssis обработать лог файл  [new]
qwerty112
Guest
red_ifrit0
qwerty112,
от события мне нужна
дата -2013-06-22
номер пик-лист: 45722627
статус: [O]

нуу, так, например
create table #Haba (xz varchar(max))
go

BULK INSERT #Haba
   FROM 'C:\log.log'
   WITH 
      (
		CODEPAGE = 'ACP'
      )

;with cte as (
select 
	row_number() over(order by xz) as id, 
	cast('<row><a>'+replace(xz , ' ', '</a><a>')+'</a></row>' as xml) as xz
from #Haba
where xz like '%NEW_PICK_LIST%')

select cte.id , a.xz1, a.xz2, a.xz3
from cte
cross apply 
(
select 
	t.c.value('a[1]/text()[1]', 'datetime') as xz1,
	t.c.value('a[6]/text()[1]', 'varchar(10)') as xz2,
	t.c.value('a[16]/text()[1]', 'varchar(10)') as xz3

from cte.xz.nodes('/row') as t(c)
) a

go

drop table #Haba
go

(17 row(s) affected)
id                   xz1                     xz2        xz3
-------------------- ----------------------- ---------- ----------
1                    2013-06-22 14:32:12.243 45722627   [O]

(1 row(s) affected)
9 июл 13, 10:27    [14539646]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить