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

Откуда:
Сообщений: 323
добрый день! Подскажите пожалуйста, имеются файлы формата txt, их много в порядке 1800 штук

Пример файла:
# AAAntropov IKC234362 11.02.2015 15:32:11,63 

Настройка протокола IP для Windows

Подключение по локальной сети 5 - Ethernet адаптер:


        DNS-суффикс этого подключения . . : 

        IP-адрес  . . . . . . . . . . . . : 192.168.28.5

        Маска подсети . . . . . . . . . . : 255.255.255.0

        Основной шлюз . . . . . . . . . . : 192.168.28.1


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


Смогла только так в один столбец засунуть инфу, пока только из одного файла.
truncate table dbo.AAAntropov
CREATE TABLE [dbo].[AAAntropov] (
[Column 0] nvarchar(max),
)

bulk insert AAAntropov
from 'E:\ip\AAAntropov.txt'
with
(
CODEPAGE = 'ACP',
FIELDTERMINATOR = ' ',
ROWTERMINATOR = '\n'
)
select * from AAAntropov
17 фев 15, 07:07    [17274543]     Ответить | Цитировать Сообщить модератору
 Re: как получить ip адрес  [new]
DmitryVT
Member

Откуда: VRN
Сообщений: 192
рациональнее сервер использовать по его прямому назначению, напишите приложение для обработки ваших файлов, с размещение в архивную папку отработанных и выполнением сценария INSERT.
17 фев 15, 08:25    [17274638]     Ответить | Цитировать Сообщить модератору
 Re: как получить ip адрес  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31438
da haroch
нужно в одну таблицу получить Учетные данные пользователя, имя компьютера и ip-адрес.
Смогла только так в один столбец засунуть инфу, пока только из одного файла.
Теперь пишете алгоритм распарсивания текста, зная этот формат, и потом программируете, используя строковые функции сиквела.

Или отказываетесь от такого подхода, то есть пишите внешнее по отношению к сиеквелу приложение.
17 фев 15, 08:47    [17274686]     Ответить | Цитировать Сообщить модератору
 Re: как получить ip адрес  [new]
Glory
Member

Откуда:
Сообщений: 104760
da haroch
Смогла только так в один столбец засунуть инфу, пока только из одного файла.

А дальше изучаете список строковых функций и парсите с их помощью ваши строки, извлекая нужную информацию
17 фев 15, 09:25    [17274748]     Ответить | Цитировать Сообщить модератору
 Re: как получить ip адрес  [new]
da haroch
Member

Откуда:
Сообщений: 323
Glory
da haroch
Смогла только так в один столбец засунуть инфу, пока только из одного файла.

А дальше изучаете список строковых функций и парсите с их помощью ваши строки, извлекая нужную информацию


Вот получилась вот такая ерунда.
Принципе получилось вытащить.
--Вывод 
 select  min(case when  charindex('#', [Column 0])>0 then (SUBSTRING([Column 0],1, CHARINDEX(' ', [Column 0], CHARINDEX(' ', [Column 0])+1)))END) as UserName, 
 substring(min(case when  charindex('IP-адрес', [Column 0])>0 then ([Column 0]) END),45,15) as IP
 from AAAntropov 


Но только не могу не как сообразить как решетку убрать получается первая запись вот такая # AAAntropov
17 фев 15, 12:28    [17275719]     Ответить | Цитировать Сообщить модератору
 Re: как получить ip адрес  [new]
da haroch
Member

Откуда:
Сообщений: 323
т.е данные получаются так как мне нужно

  USERNAME              IP
# AAAntropov        192.168.28.5

но при попытки убрать решётку ерунда вылазит.

И ещё вопрос, а как мне теперь массово все 1800 файлов загрузить и засунуть в одну таблицу. Я извиняюсь.
17 фев 15, 12:31    [17275734]     Ответить | Цитировать Сообщить модератору
 Re: как получить ip адрес  [new]
Glory
Member

Откуда:
Сообщений: 104760
da haroch
Но только не могу не как сообразить как решетку убрать получается первая запись вот такая # AAAntropov

Выбирать подстроку не с 1ой позиции ?
17 фев 15, 12:31    [17275735]     Ответить | Цитировать Сообщить модератору
 Re: как получить ip адрес  [new]
Glory
Member

Откуда:
Сообщений: 104760
da haroch
И ещё вопрос, а как мне теперь массово все 1800 файлов загрузить и засунуть в одну таблицу. Я извиняюсь.

Написать цикл по списку файлов
17 фев 15, 12:32    [17275742]     Ответить | Цитировать Сообщить модератору
 Re: как получить ip адрес  [new]
da haroch
Member

Откуда:
Сообщений: 323
Glory
da haroch
И ещё вопрос, а как мне теперь массово все 1800 файлов загрузить и засунуть в одну таблицу. Я извиняюсь.

Написать цикл по списку файлов


Я извиняюсь, в sql не разу это не делала, может есть какой нибудь пример?
17 фев 15, 12:33    [17275749]     Ответить | Цитировать Сообщить модератору
 Re: как получить ip адрес  [new]
da haroch
Member

Откуда:
Сообщений: 323
Glory
da haroch
Но только не могу не как сообразить как решетку убрать получается первая запись вот такая # AAAntropov

Выбирать подстроку не с 1ой позиции ?



убрать # и пробел.
17 фев 15, 12:34    [17275753]     Ответить | Цитировать Сообщить модератору
 Re: как получить ip адрес  [new]
Glory
Member

Откуда:
Сообщений: 104760
da haroch
Glory
пропущено...

Выбирать подстроку не с 1ой позиции ?



убрать # и пробел.

Мда. Начните выбирать подстроку с той позиции, где начинаются нужные вам данные
17 фев 15, 12:35    [17275758]     Ответить | Цитировать Сообщить модератору
 Re: как получить ip адрес  [new]
da haroch
Member

Откуда:
Сообщений: 323
Glory
da haroch
пропущено...



убрать # и пробел.

Мда. Начните выбирать подстроку с той позиции, где начинаются нужные вам данные


а я пробовала, у меня не получилось.=)
17 фев 15, 12:36    [17275765]     Ответить | Цитировать Сообщить модератору
 Re: как получить ip адрес  [new]
Glory
Member

Откуда:
Сообщений: 104760
da haroch
а я пробовала, у меня не получилось.=)

А вы пробуйте, пока не полчится
17 фев 15, 12:39    [17275777]     Ответить | Цитировать Сообщить модератору
 Re: как получить ip адрес  [new]
da haroch
Member

Откуда:
Сообщений: 323
Glory
da haroch
а я пробовала, у меня не получилось.=)

А вы пробуйте, пока не получится

спасибо кэп=))))
Вообще да если долго мучиться, как правило всё получается, вы правы.
А что по поводу цикла?
17 фев 15, 12:41    [17275789]     Ответить | Цитировать Сообщить модератору
 Re: как получить ip адрес  [new]
Glory
Member

Откуда:
Сообщений: 104760
da haroch
А что по поводу цикла?

Вам разрешается написать цикл. Можете приступать.
17 фев 15, 12:43    [17275796]     Ответить | Цитировать Сообщить модератору
 Re: как получить ip адрес  [new]
da haroch
Member

Откуда:
Сообщений: 323
Glory
da haroch
А что по поводу цикла?

Вам разрешается написать цикл. Можете приступать.

Спасибо=))))))))
17 фев 15, 12:44    [17275801]     Ответить | Цитировать Сообщить модератору
 Re: как получить ip адрес  [new]
Jovanny
Member

Откуда:
Сообщений: 1195
По поводу цикла.
http://www.codeproject.com/Tips/803195/Foreach-File-Enumerator-in-SSIS
17 фев 15, 12:59    [17275865]     Ответить | Цитировать Сообщить модератору
 Re: как получить ip адрес  [new]
da haroch
Member

Откуда:
Сообщений: 323
Jovanny
По поводу цикла.
http://www.codeproject.com/Tips/803195/Foreach-File-Enumerator-in-SSIS


спасибо большое, я сейчас по разбираюсь.
17 фев 15, 13:11    [17275922]     Ответить | Цитировать Сообщить модератору
 Re: как получить ip адрес  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31438
Jovanny
По поводу цикла.
http://www.codeproject.com/Tips/803195/Foreach-File-Enumerator-in-SSIS
Можно запустить в цикле и существующий код, не обязательно использовать SSIS

Вот команда для цикла: https://msdn.microsoft.com/ru-ru/library/ms178642.aspx
Список файлов можно получить командой xp_dirtree или xp_cmdshell
17 фев 15, 18:31    [17278112]     Ответить | Цитировать Сообщить модератору
 Re: как получить ip адрес  [new]
Jovanny
Member

Откуда:
Сообщений: 1195
alexeyvg,

Конечно, существует масса способов. Можно из CLR-процедуры получать список, там есть классы Directory и DirectoryInfo.
Можно какой-то внешний сервис опрашивать. Всё зависит от полёта фантазии.
18 фев 15, 09:47    [17279651]     Ответить | Цитировать Сообщить модератору
 Re: как получить ip адрес  [new]
churupaha
Member

Откуда: Краснодар
Сообщений: 1015
da haroch,

если задача разовая, для залить по-быстрому

exec master.dbo.xp_dirtree 'c:\temp\q', 1, 1 


+

+ текст

declare
	@d nvarchar(max) = (select bulkcolumn from openrowset(bulk N'c:\temp\q\data.txt', single_clob) t);

with t0 as
(
	select
		[match],
		[group],
		value
	from
		ext.Regex_Matches(@d, N'#\s+(\w+)\s+(\w+)\s+.*IP-адрес[\s.]*:\s*(\d{0,3}\.\d{0,3}\.\d{0,3}\.\d{0,3})', 'Singleline')
)
select
	p.[2] as [user_name],
	p.[3] as [host_name],
	p.[4] as [ip]
from
	t0
		pivot
	(max(value) for [group] in ([2], [3], [4])) p;




ext.Regex_Matches

К сообщению приложен файл. Размер - 18Kb
19 фев 15, 13:32    [17287160]     Ответить | Цитировать Сообщить модератору
 Re: как получить ip адрес  [new]
Glory
Member

Откуда:
Сообщений: 104760
exec master.dbo.xp_cmdshell 'find "IP-адрес" c:\xxx\myfile.txt'


Сообщение было отредактировано: 19 фев 15, 14:03
19 фев 15, 14:03    [17287408]     Ответить | Цитировать Сообщить модератору
 Re: как получить ip адрес  [new]
Glory
Member

Откуда:
Сообщений: 104760
еще лучше
exec master.dbo.xp_cmdshell '@FOR /F "TOKENS=2* DELIMS=:" %A IN (''FIND "IP-адрес" с:\xxx\test.txt'') DO @ECHO %A'


Сообщение было отредактировано: 19 фев 15, 14:13
19 фев 15, 14:11    [17287466]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить