如何验证海量文件名sql?

How validate massive files name sql?

我需要验证文件名是否已上传到我的 table "TBL_PAGO_DIARIO_Nextel"。

开始,我已经有一个 table,其中包含我从 SSIS 上传的文件的名称

table 看起来像 :

tbl_filenames

RC196012070801
RC196017080401

如果它们已经在我的 table "TBL_PAGO_DIARIO_Nextel" 上,我需要验证它们中的每一个 "RC196012070801,RC196017080401"。 我有想法用存储过程来做,但我不知道具体怎么做 因为例如,如果第一个已经在 table "TBL_PAGO_DIARIO_Nextel" 上输入,则不应插入它并仅显示一条消息并继续第二个和继续。

我现在正在做:

create procedure sp_validateFile_Entel
@nomfile varchar(14)
as

declare @ncant int

select @ncant = count(*) from TBL_PAGO_DIARIO_Nextel where s_Empresa_Code = 'cperu' and s_Nombre_Vol = @nomfile

这只会接受一个文件,我不需要它。我需要一对一阅读并验证其中一些是否收费请帮助我。

谢谢!!!

选项 1 如果文件不存在,则一次只插入一个文件

IF OBJECT_ID('dbo.usp_validateFile_Entel') IS NULL
    EXEC ('CREATE PROCEDURE dbo.usp_validateFile_Entel AS RETURN 0;');
GO
ALTER PROCEDURE dbo.usp_validateFile_Entel
@nomfile VARCHAR(14)
AS
BEGIN
    --Only insert new record if @nomfile does NOT exist already
    IF NOT EXISTS ( SELECT 1 FROM TBL_PAGO_DIARIO_Nextel WHERE s_Empresa_Code = 'cperu' AND s_Nombre_Vol = @nomfile )
    BEGIN
        INSERT INTO TBL_PAGO_DIARIO_Nextel(
            s_Empresa_Code, s_Nombre_Vol
        )
        VALUES(
            'cperu', @nomfile
        );
    END;
END

选项 2 使用现有 table [tbl_filenames]

中的数据插入
--Create the tables
IF OBJECT_ID('TBL_PAGO_DIARIO_Nextel','U') IS NOT NULL
    DROP TABLE TBL_PAGO_DIARIO_Nextel;
IF OBJECT_ID('tbl_filenames','U') IS NOT NULL
    DROP TABLE tbl_filenames;

CREATE TABLE TBL_PAGO_DIARIO_Nextel ( s_Empresa_Code VARCHAR(20), s_Nombre_Vol VARCHAR(14) )

CREATE TABLE tbl_filenames ( FileNames VARCHAR(14))

--Insert some temp values
INSERT INTO dbo.tbl_filenames ( FileNames )
    VALUES ('RC196012070801'), ('RC196012070801' )

--Create the Procedure
IF OBJECT_ID('dbo.usp_validateFile_Entel') IS NULL
  EXEC ('CREATE PROCEDURE dbo.usp_validateFile_Entel AS RETURN 0;');
GO
ALTER PROCEDURE dbo.usp_validateFile_Entel
    --Input Parameters
AS
BEGIN

    --Only exist if data doesn't exist already
    INSERT INTO TBL_PAGO_DIARIO_Nextel(
        s_Empresa_Code, s_Nombre_Vol
     )
    SELECT 'cperu', T.FileNames 
    FROM 
        dbo.tbl_filenames T
    WHERE
        NOT EXISTS
            (   SELECT P.s_Nombre_Vol 
                FROM TBL_PAGO_DIARIO_Nextel P 
                WHERE P.s_Empresa_Code = 'cperu' 
                AND P.s_Nombre_Vol = T.FileNames 
            )
END ;
GO

--Exexute the Procedure
EXEC dbo.usp_validateFile_Entel

--Check the Results in the table
SELECT * FROM TBL_PAGO_DIARIO_Nextel

--Drop the tables
IF OBJECT_ID('TBL_PAGO_DIARIO_Nextel','U') IS NOT NULL
    DROP TABLE TBL_PAGO_DIARIO_Nextel;
IF OBJECT_ID('tbl_filenames','U') IS NOT NULL
    DROP TABLE tbl_filenames;