2010-06-21 3 views
0

В настоящее время мне поручено считывать некоторые данные, хранящиеся в плоском файле, в мою базу данных и запускать отчеты против него. Одна проблема, с которой я столкнулся, - проверить, действительно ли файл существует. Есть ли простая функция проверки наличия файла?Файлы в хранимой процедуре SQL

Спасибо!

ответ

3

Just googling Я нашел this на SQL DBA и this на советах MS SQL.

+0

Хм ... кажется, мои навыки Google сегодня не работают. Спасибо вам за помощь! – Shaded

+0

без проблем. Рад помочь: D – Kyra

0

Я считаю, что вы можете сделать что-то вроде этого:

DECLARE @Path varchar(128) , 
@FileName varchar(128) 
SET @Path = 'C:\' 
SET @FileName = 'FILE_NAME.EXT' 

DECLARE @objFSys int 
DECLARE @i int 
DECLARE @File varchar(1000) 

SET @File = @Path + @FileName 
EXEC sp_OACreate 'Scripting.FileSystemObject', @objFSys out 
EXEC sp_OAMethod @objFSys, 'FileExists', @i out, @File 
IF @i = 1 
    PRINT 'file exists' 
ELSE 
    PRINT 'file does not exists' 
EXEC sp_OADestroy @objFSys 

This article идет по этому методу и пару других.

1

Вы делаете ETL в хранимой процедуре? !! Я не думаю, что вы должны, только потому, что можете.

Я рекомендую вам использовать SSIS для этого. Выполнение ETL в Stored Proc или TSQL не является рекомендуемой практикой, по сути, оно часто используется в качестве примера того, что не нужно делать.

+0

Если бы я мог +2 это, я бы – ninesided

+0

Я не, в основном потому, что есть уже процедура, которую я могу использовать для импорта файлов, закодированных кем-то другим. Я просто проверяю, существует ли файл, прежде чем отправлять его на эту процедуру. Однако вы заинтересовали меня. Знаете ли вы о каких-либо хороших источниках, из которых я мог бы научиться использовать SSIS? – Shaded

+0

@Shaded Я бы начал с SQL Server Integration Services. Пошаговая книга с Microsoft press –

Смежные вопросы