Sql 我可以使用';比如';SSIS作业中检查文件名是否存在的语句?

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.

我有一个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。我用于检查的表达式是:

"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"

非常好,谢谢你,马格纳斯。