0

我需要验证文件的名称是否已上载到我的表“TBL_PAGO_DIARIO_Nextel”上。如何验证海量文件名称sql?

开始,我已经一个表,我从SSIS

表上传文件的名字看起来像是:

tbl_filenames

RC196012070801
RC196017080401

我需要验证其中的每一个“RC196012070801,RC196017080401”,如果它们已经在我的桌子上“TBL_PAGO_DIARIO_Nextel” 。 我有想法做到这一点与商店的程序,但我不知道具体如何 ,因为例如,如果第一个已经进入表“TBL_PAGO_DIARIO_Nextel”然后不应该插入它,只显示一个messague并继续第二个和上。

我做它现在:

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 

这只是将接受一个文件,我不需要它。我需要阅读一对一和验证,如果他们中的一些被控请帮我一下吧。

谢谢!

+0

如何从现有的表用数据插入时间插入一个文件你使用SQL 2005,2008和2012同时使用一个过程?不要垃圾标签......我也不明白你在这里如何使用“收费”。你的意思是改变了吗(比如文件被修改了)? –

+0

你的问题并不十分清楚。但是与此同时,你应该考虑一个不同于sp_的前缀(或者甚至更好的是没有前缀)。 sp_前缀可能会导致一些问题。 http://sqlperformance.com/2012/10/t-sql-queries/sp_prefix –

+0

为了解决您的问题,我们需要更多的细节。这里是一个开始的好地方。 http://spaghettidba.com/2015/04/24/how-to-post-a-t-sql-question-on-a-public-forum/ –

回答

0

选项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 至[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;