0

Je dois valider si les noms des fichiers ont été uploadés sur ma table "TBL_PAGO_DIARIO_Nextel".Comment valider les fichiers massifs nom sql?

À partir je l'ai déjà une table avec le nom des fichiers que je télécharger à partir de SSIS

la table ressemble à cela:

tbl_filenames

RC196012070801
RC196017080401

J'ai besoin pour valider chacun d'entre eux "RC196012070801, RC196017080401" s'ils sont déjà sur ma table "TBL_PAGO_DIARIO_Nextel" . J'ai l'idée de le faire avec une procédure de magasin mais je ne sais pas exactement comment car par exemple si le premier était déjà entré sur la table "TBL_PAGO_DIARIO_Nextel" alors ne devrait pas l'insérer et montrer simplement un message et continuer avec le second et sur.

Je le fais pour l'instant:

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 

Ce juste acceptera un fichier et je ne besoin .Je besoin de lire un à un et valider si certains d'entre eux a été chargé S'il vous plaît me aider.

Merci !!!

+0

Comment sont vous utilisez SQL 2005, 2008 et 2012 en même temps avec une procédure? Ne pas spammer les tags ... aussi je ne comprends pas comment vous utilisez "chargé" ici. Voulez-vous dire changé (comme le fichier a été modifié)? –

+0

Votre question n'est pas du tout claire. Mais en attendant vous devriez considérer un préfixe différent de sp_ (ou mieux encore aucun préfixe). Le préfixe sp_ peut vous causer des problèmes. http://sqlperformance.com/2012/10/t-sql-queries/sp_prefix –

+0

Pour vous aider avec votre question nous avons besoin de plus de détails. Voici un bon endroit pour commencer. http://spaghettidba.com/2015/04/24/how-to-post-a-t-sql-question-on-a-public-forum/ –

Répondre

0

Option 1 Pour insérer un seul fichier à la fois si elle n'existe pas déjà

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 

Option 2 Pour insérer des données à l'aide de la table existante [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;