Sql 我可以使用';比如';SSIS作业中检查文件名是否存在的语句?
我有一个SSIS任务将平面文件加载到数据库中。我将文件名加载到SQL数据库中的一列中。在第一步中,我检查文件名是否已经存在。如果这样做,文件将被删除。如果没有,它将被处理和加载。原始文件是.dat。问题是,由于另一个进程,加载的文件被重命名,名称末尾附加了一个“_flat.txt”,与原始文件不匹配 “YC_HSO_PA_0_Test_1.dat” “YC_HSO_PA_0_Test_1_flat.txt” 存储文件原始名称的变量是“User::FileNameCheck”。我对照的表是TOC.PA_STAGE。我用于检查的表达式是:Sql 我可以使用';比如';SSIS作业中检查文件名是否存在的语句?,sql,visual-studio-2015,ssis,Sql,Visual Studio 2015,Ssis,我有一个SSIS任务将平面文件加载到数据库中。我将文件名加载到SQL数据库中的一列中。在第一步中,我检查文件名是否已经存在。如果这样做,文件将被删除。如果没有,它将被处理和加载。原始文件是.dat。问题是,由于另一个进程,加载的文件被重命名,名称末尾附加了一个“_flat.txt”,与原始文件不匹配 “YC_HSO_PA_0_Test_1.dat” “YC_HSO_PA_0_Test_1_flat.txt” 存储文件原始名称的变量是“User::FileNameCheck”。我对照的表是TOC.
"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附加到变量?看起来您的代码没有扩展@[User::FileNameCheck]的值。请尝试:
"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"
非常好,谢谢你,马格纳斯。