Получить имя файла загрузки файла в SQL - PullRequest
1 голос
/ 29 декабря 2010

Я искал решение о том, как получить имя файла использования SQL Server. Я знаю, что это возможно, если вы используете C #. Но как это делается в SQL?

Например, у меня есть файл (пример: uploadfile.txt), расположенный в C: \, который собирается загрузить. У меня есть таблица, которая имеет поле «имя файла». Как мне получить имя файла этого файла?

Это сценарий, который у меня есть на данный момент.

-- Insert to table
BULK INSERT Price_Template_Host
FROM 'C:\uploadfile.txt'
WITH
(
    FIELDTERMINATOR = '\t',
    ROWTERMINATOR = '\n'
)

-- Insert into transaction log table filename and datetime()

Ответы [ 2 ]

1 голос
/ 13 апреля 2011

Я бы лично связал эту проблему с пакетом SSI, который обеспечил бы вам большую гибкость в плане загрузки и последующей регистрации.Тем не менее, если вы настроены на это с помощью T-SQL, подумайте о выполнении динамически сконструированного SQL:

declare @cmd nvarchar(max), @filename nvarchar(255)
set @filename = 'C:\uploadfile.txt'

set @cmd = 
'BULK INSERT Price_Template_Host
FROM '''+@filename+'''
WITH
(
    FIELDTERMINATOR = ''\t'',
    ROWTERMINATOR = ''\n''
)'

-- Debug only
print @cmd
-- Insert to table
exec(@cmd)

-- Insert into transaction log table filename and datetime()
insert into dbo.LoadLog (filename, TheTime)
values (@filename, getdate())

Если я правильно понимаю ваш вопрос, это парамитеризует имя файла, чтобы вы могли его перехватитьдалее в сценарии.

1 голос
/ 29 декабря 2010

Насколько мне известно, в T-SQL нет прямого метода для поиска файла в файловой системе.Ведь это не то, для чего предназначен язык.Из предоставленного вами сценария BULK INSERT требует, чтобы полное имя файла уже было известно на момент вызова оператора.

Существует, конечно, целый ряд способов, которыми вы могли быопределить / найти файл, не используя T-SQL, например, используя SSIS, возможно, вы могли бы использовать xp_cmdshell (имеет предупреждения о безопасности) или создать модуль управляемого кода в SQL Server для выполнения этой задачи.

Чтобы предоставить вам конкретные рекомендации, может быть полезно, если бы вы предоставили нам все сведения о бизнес-процессе , который вы пытаетесь внедрить.

...