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

Откуда: С родины ПАЗиков.
Сообщений: 179
Здравствуйте.

У меня имеется много - много текстовых файлов в файлах данные структурированы (разделители присутствуют и тд тп).
Задача такая. Из хранимой процедуры нужно передбать все имеющиеся файлы и перенсти всю информацию из них в БД. Как из хранимой процедуры обратиться к файли/папке?
Или лудше не париться и реализовать это дело на VB?
11 янв 10, 14:19    [8165472]     Ответить | Цитировать Сообщить модератору
 Re: Обработка файлов из хранимой процедуры...  [new]
Noyman
Member

Откуда:
Сообщений: 142
Компьютерщик,
Можно через DTS/SSIS
11 янв 10, 14:21    [8165486]     Ответить | Цитировать Сообщить модератору
 Re: Обработка файлов из хранимой процедуры...  [new]
Компьютерщик
Member

Откуда: С родины ПАЗиков.
Сообщений: 179
Noyman
Компьютерщик,
Можно через DTS/SSIS


А поподробней?
11 янв 10, 14:26    [8165529]     Ответить | Цитировать Сообщить модератору
 Re: Обработка файлов из хранимой процедуры...  [new]
Glory
Member

Откуда:
Сообщений: 104760
А имена файлов конечно произвольные и каждый раз различные ?
11 янв 10, 14:28    [8165549]     Ответить | Цитировать Сообщить модератору
 Re: Обработка файлов из хранимой процедуры...  [new]
Noyman
Member

Откуда:
Сообщений: 142
Компьютерщик,
А количество и имена этих файлов постоянные?
11 янв 10, 14:28    [8165550]     Ответить | Цитировать Сообщить модератору
 Re: Обработка файлов из хранимой процедуры...  [new]
Компьютерщик
Member

Откуда: С родины ПАЗиков.
Сообщений: 179
Имена файлов вполне известные и ожидаемые (журнал с IIS)
11 янв 10, 14:30    [8165580]     Ответить | Цитировать Сообщить модератору
 Re: Обработка файлов из хранимой процедуры...  [new]
Компьютерщик
Member

Откуда: С родины ПАЗиков.
Сообщений: 179
дата.txt
11 янв 10, 14:31    [8165588]     Ответить | Цитировать Сообщить модератору
 Re: Обработка файлов из хранимой процедуры...  [new]
Glory
Member

Откуда:
Сообщений: 104760
Компьютерщик
дата.txt

Т.е. только один файл ?
11 янв 10, 14:33    [8165606]     Ответить | Цитировать Сообщить модератору
 Re: Обработка файлов из хранимой процедуры...  [new]
Noyman
Member

Откуда:
Сообщений: 142
Компьютерщик,
Ну так создаете dts пакет для заливки содержимого фалов в базу и нем указываете список файлов( если они постоянный).
Если же не постоянные имена. но известен алгоритм их формирования. можно прямо в dts делать список и через параметр пихать в компоненту text file или же генерировать хранимкой и dts запускать с параметром (именем файла).
11 янв 10, 14:33    [8165613]     Ответить | Цитировать Сообщить модератору
 Re: Обработка файлов из хранимой процедуры...  [new]
Компьютерщик
Member

Откуда: С родины ПАЗиков.
Сообщений: 179
Glory
Компьютерщик
дата.txt

Т.е. только один файл ?

Каждый день формируется по одному файлу...
11 янв 10, 14:35    [8165624]     Ответить | Цитировать Сообщить модератору
 Re: Обработка файлов из хранимой процедуры...  [new]
Компьютерщик
Member

Откуда: С родины ПАЗиков.
Сообщений: 179
А в SQL что нет вункций для работы с файлами/каталогами?
Нужно то всевлиш открыть файл и построчно прочитать его...
11 янв 10, 14:40    [8165668]     Ответить | Цитировать Сообщить модератору
 Re: Обработка файлов из хранимой процедуры...  [new]
Noyman
Member

Откуда:
Сообщений: 142
Компьютерщик,
Ну dts это тоже sql.
Но можно и через OPENROWSET это делать, если преобразовывать данные не надо.
11 янв 10, 14:50    [8165751]     Ответить | Цитировать Сообщить модератору
 Re: Обработка файлов из хранимой процедуры...  [new]
Glamorama
Member

Откуда:
Сообщений: 152
Можно даже извратиться и воспользоваться xp_cmdshell. Через dir /b получаем список имен файлов в таблицу в цикле через BCP все грузим. В плюсе - возможность прошерстить каталоги в поисках файлов с именами, попадающими под шаблон.
11 янв 10, 15:12    [8165918]     Ответить | Цитировать Сообщить модератору
 Re: Обработка файлов из хранимой процедуры...  [new]
WarAnt
Member

Откуда: Питер
Сообщений: 2421
почитайте про BULK INSERT
11 янв 10, 15:12    [8165922]     Ответить | Цитировать Сообщить модератору
 Re: Обработка файлов из хранимой процедуры...  [new]
Ghola
Member

Откуда: из капусты
Сообщений: 273
Noyman
...Но можно и через OPENROWSET это делать, если преобразовывать данные не надо.

Я для этого испрользую linked server - он немного быстрее работатет.
К тому же, инструкция OPENROWSET может быть запрещена настройками безопасности для производственного SQL-сервера.

/****** Object:  LinkedServer [TXTSRV]    Script Date: 01/11/2010 15:08:07 ******/
EXEC master.dbo.sp_addlinkedserver @server = N'TXTSRV', @srvproduct=N'Jet 4.0', @provider=N'Microsoft.Jet.OLEDB.4.0', @datasrc=N'\\Пусть_к_каталогу', @provstr=N'Text'
 /* For security reasons the linked server remote logins password is changed with ######## */
EXEC master.dbo.sp_addlinkedsrvlogin @rmtsrvname=N'TXTSRV',@useself=N'True',@locallogin=NULL,@rmtuser=NULL,@rmtpassword=NULL
В каталоге с текстовыми файлами надо поместить файл schema.ini со спецификацией порядка и формата полей в текстовых файлах
Потом SQL-запрос к текстовому источнику данных (например к файлу "обмен.txt") выглядит так:
SELECT * FROM [TXTSRV]...[обмен#txt]
11 янв 10, 15:19    [8165991]     Ответить | Цитировать Сообщить модератору
 Re: Обработка файлов из хранимой процедуры...  [new]
Ghola
Member

Откуда: из капусты
Сообщений: 273
Поставщик OLE DB для Jet - Читайте там "Настройка связанного сервера для файла с форматированным текстом" Работает, как минимум, начиная с SQL-2000.
11 янв 10, 15:27    [8166046]     Ответить | Цитировать Сообщить модератору
 Re: Обработка файлов из хранимой процедуры...  [new]
Ghola
Member

Откуда: из капусты
Сообщений: 273
А разрешать на производственном сервере команду xp_cmdshell равно как и OPENROWSET - очень плохо с точки зрения безопасности.

Кстати, если импортируете логи Web-сервера, рекомендую сделать нестандартный символ-разделитель полей в текстовом файле. Пользователь может ввести например свой логин или строку идентификации браузера содержащими пробел или стандартный символ разделитель (например ";") И тогда Ваш импорт логов накроется.
11 янв 10, 15:36    [8166109]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить