У меня есть задание SSIS для загрузки плоских файлов в базу данных. Я загружаю имя файла в столбец в базе данных SQL. На первом этапе я проверяю, существует ли имя файла. Если это так, файл будет удален. Если нет, он обрабатывается и загружается. Исходный файл .dat. Проблема состоит в том, что из-за другого процесса загружаемый файл переименовывается с «_flat.txt», добавляемым в конец имени, и не соответствует оригиналу.
"YC_HSO_PA_0_Test_1.dat"
"YC_HSO_PA_0_Test_1_flat.txt"
Переменная, в которой хранится исходное имя файла, - 'User :: FileNameCheck ». Таблица, по которой я проверяю, TO C .PA_STAGE. Выражение, которое я использую для проверки:
"DECLARE @FileName VARCHAR (100)
SET @FileName = '"+ @[User::FileNameCheck] +"'
IF EXISTS (SELECT 1
FROM [TOC].[PA_STAGE]
WHERE FileName = @FileName)
BEGIN
SELECT 0 AS LoadStatusFlag
END
ELSE
BEGIN
SELECT 1 AS LoadStatusFlag
END"
Я пробовал это:
"DECLARE @FileName VARCHAR (100)
SET @FileName = REPLACE(REPLACE(@[User::FileNameCheck],'.txt',''),'.dat','') +'_flat.txt'
IF EXISTS (SELECT 1
FROM [TOC].[PA_STAGE]
WHERE FileName = @FileName)
BEGIN
SELECT 0 AS LoadStatusFlag
END
ELSE
BEGIN
SELECT 1 AS LoadStatusFlag
END"
, но получаю ошибку: SET @FileName = R ... "завершился неудачно со следующим ошибка: «Необходимо объявить скалярную переменную« @ ».».
Могу ли я использовать инструкцию «LIKE» для поиска имен файлов для сопоставления. Или как-то добавить _flat.txt к переменной?