SSIS を使用してフォルダーを反復処理し、すべての txt ファイルの内容をデータベースに読み取ります。まず、ストアド プロシージャを使用してファイルが既に処理されているかどうかを確認しています。
ALTER PROC [dbo].[CheckForDuplicateFileEntry]
(
@TaskID INT,
@Filename VARCHAR(50),
@FileAlreadyExists BIT OUTPUT
)AS
BEGIN
DECLARE @TaskTypeID INT
SET @FileAlreadyExists = 0
SELECT @TaskTypeID = TaskTypeID FROM Tasks WHERE TaskID = @TaskID
IF EXISTS ( SELECT TaskID
FROM TaskSteps
WHERE @Filename IN (
SELECT TOP ( 30 )
TaskSteps.Filename
FROM TaskSteps
INNER JOIN Tasks ON TaskSteps.TaskID = Tasks.TaskID
WHERE ( Tasks.TaskTypeID = @TaskTypeID
AND [Filename] IS NOT NULL
)
AND IsValid = 1
AND ProcessStatusID = 2 ) )
BEGIN
INSERT INTO TaskSteps ( TaskID, StepDesc )
VALUES (
@TaskID,
'Duplicate filename. (' + @Filename + ') Already exists.'
)
SET @FileAlreadyExists = 1
END
END
私も試してみました
IF EXISTS (SELECT TOP 30 Filename
FROM TaskSteps INNER JOIN Tasks ON TaskSteps.TaskID = Tasks.TaskID
WHERE (SUBSTRING(TaskSteps.Filename,18,13) = SUBSTRING(@Filename,18,13))
AND IsValid = 1
AND ProcessStatusID = 2)
しかし、ファイルを反復処理すると、最初に処理され、次が重複であると宣言され、3 番目が処理され、4 番目が重複であると宣言されるなど、ファイル名は非常に似ています。その部分だけが変更され、おそらく 1 桁だけ変更されます。つまり、Songs_120502_175535.txt です。