home bbs files messages ]

Forums before death by AOL, social media and spammers... "We can't have nice things"

   comp.databases.ms-sqlserver      Notorious Rube Goldberg contraption      19,505 messages   

[   << oldest   |   < older   |   list   |   newer >   |   newest >>   ]

   Message 18,819 of 19,505   
   JAW to All   
   Re: Purge Utility (1/2)   
   14 Feb 13 08:22:56   
   
   From: jwilliam@aglresources.com   
      
   Below is the full process.   
      
   Basically a procress to clean-up some staging tables for a conversion.   
      
   SImply SQL works fine but I am having a big problem with data with apostrophes.   
      
   IF OBJECT_ID ( 'dbo.PurgeUtility', 'U' ) IS NOT NULL   
      DROP TABLE dbo.PurgeUtility;   
      
   Create table PurgeUtility (   
   TableName   varchar(128) NOT NULL,   
   PurgeRange  varchar(2000) NOT NULL   
   );   
      
   --   
   --   
   --   
      
   alter table PurgeUtility  add constraint PK_PurgeUtility Primary KEY   
   (TableName);   
      
      
   /****** Script for SelectTopNRows command from SSMS  ******/   
   SELECT TOP 1000 [TableName]   
         ,[PurgeRange]   
     FROM [CISStagingDB].[dbo].[PurgeUtility]   
      
      
   DROP TABLE REP_BUS_DIR_NO_INSTMT_JAW   
   GO   
   SELECT  * INTO REP_BUS_DIR_NO_INSTMT_JAW FROM QUERY WITH (NOLOCK)   
   GO   
      
   delete from PurgeUtility where TableName = 'BUS_DIR_NO_INSTMT_JAW'   
      
   INSERT INTO [CISStagingDB].[dbo].[PurgeUtility]([TableName],[PurgeRange])   
   VALUES ('BUS_DIR_NO_INSTMT_JAW','KY_BA IN (SELECT KY_BA  FROM  [   
   ISStagingDB].[dbo].[REP_BILL_ACCT] (nolock) WHERE  CD_OFFICE > '  + '''079'''   
   + '  OR  CD_ACCT_TYPE > 55)');   
      
      
   --   
   --  Example  insert for each file you wish to proces   
      
      
   The Full code   
      
   Below is the entire code:   
      
   USE CISStagingDB;   
      
   IF OBJECT_ID ( 'dbo.usp_PurgeCISSTAGEDB', 'P' ) IS NOT NULL   
      DROP PROCEDURE dbo.usp_PurgeCISSTAGEDB;   
   GO   
      
   CREATE Procedure dbo.usp_PurgeCISSTAGEDB   
   ( @I_TABLE varchar(128),@I_MODE varchar(10) = 'SIMULATE')   
   AS   
   /*   
      
      
   */   
   BEGIN   
   SET NOCOUNT ON;   
      
   DECLARE @VSQLQuery            NVARCHAR(2000),   
           @VCount               INT,   
           @ErrorMessage         NVARCHAR(4000),   
           @VParameterDefinition NVARCHAR(100);   
      
   /*   
    BEGIN TRANSACTION;   
      
   */   
      
      
       	PRINT '===================================================='	   
   		PRINT 'Start time=' + cast(getdate() as varchar)   
   		PRINT '===================================================='	   
      
   			-- Check for Table Criteria   
   	    Select  @VParameterDefinition = PurgeRange   
            from PurgeUtility where Tablename = @I_TABLE   
   		   
   		 If @@ROWCOUNT <> 1   
   		 BEGIN   
   		  PRINT @I_TABLE + ' Table not in the PurgeUtility table'   
   		  RETURN 4   
   		 END   
   	    -- Clean up old TEMP_TABLE_NAME if it exists   
   	   
   		  SET   @VSQLQuery = ' IF  EXISTS (SELECT * FROM sys.objects   
             WHERE object_id = OBJECT_ID(''TEMP_'+@I_TABLE+''') AND type in   
   (''U''))   
             BEGIN   
               DROP TABLE TEMP_' + @I_TABLE +   
              ' END'   
           PRINT 'Clean-up Processing Table=' + @VSQLQuery + ' Time='  +   
   cast(getdate() as varchar)   
      
   		PRINT '===================================================='	   
           PRINT @VSQLQuery   
   		PRINT '===================================================='   
   		IF @I_MODE = 'SIMULATE'   
   		 BEGIN   
   		  PRINT 'Simulation mode this step is skipped'   
   		  PRINT '===================================================='   
            END   
   		ELSE	   
            EXECUTE sp_executesql @VSQLQuery;   
    	  	   
   		-- Create  Staging Table   
   	    SET   @VSQLQuery = 'TEMP_' + @I_TABLE   
   		PRINT 'Create Staging Table=' + @VSQLQuery + ' Time='  + cast(getdate() as   
   varchar)   
           SET   @VSQLQuery = 'SELECT * INTO ' + @VSQLQuery + ' FROM REP_' +   
   @I_TABLE + ' WHERE 0=1'   
           PRINT '===================================================='	   
   		PRINT @VSQLQuery   
   		PRINT '===================================================='	   
           IF @I_MODE = 'SIMULATE'   
            BEGIN   
   		  PRINT 'Simulation mode this step is skipped'   
   		  PRINT '===================================================='   
            END   
   		ELSE   
   	     EXECUTE sp_executesql @VSQLQuery;   
    	    	    	   
   		--   Backup the critera of rows (TABLOCK required for MINIMAL LOG) TEMP_TABLE   
   		SET   @VSQLQuery = 'TEMP_' + @I_TABLE   
   		PRINT 'Fill Staging Table=' + @VSQLQuery + ' Time='  + cast(getdate() as   
   varchar)   
           SET   @VSQLQuery = 'INSERT INTO ' + @VSQLQuery + ' WITH (TABLOCK)   
   SELECT * FROM REP_' + @I_TABLE   
   		PRINT '===================================================='	   
   		PRINT @VSQLQuery   
   		PRINT '===================================================='	   
           IF @I_MODE = 'SIMULATE'   
   		  BEGIN   
   		  PRINT 'Simulation mode this step is skipped'   
   		  PRINT '===================================================='   
            END   
   		ELSE   
   		 BEGIN   
   		  EXECUTE sp_executesql @VSQLQuery;   
   		  SELECT @Vcount = @@ROWCOUNT   
             PRINT 'Rows Loaded to ' + @VSQLQuery + ' = ' + CAST(@Vcount AS   
   VARCHAR(10))   
   		  PRINT '===================================================='	   
    	   
    	      IF @Vcount = 0   
   		   BEGIN   
   		    PRINT 'REP_' + @I_TABLE + ' is empty'   
   		    PRINT '===================================================='	   
   		    RETURN 4   
   	      END   
    	    END   
   		--   Truncate  REP_table   
   		SET   @VSQLQuery = 'REP_' + @I_TABLE   
   		PRINT 'TRUNCATE REP Table=' + @VSQLQuery + ' Time='  + cast(getdate() as   
   varchar)   
           SET   @VSQLQuery = 'TRUNCATE TABLE ' + @VSQLQuery   
   		PRINT '===================================================='	   
   		PRINT @VSQLQuery   
   		PRINT '===================================================='	   
           IF @I_MODE = 'SIMULATE'   
   		  BEGIN   
   		  PRINT 'Simulation mode this step is skipped'   
   		  PRINT '===================================================='   
            END   
   		ELSE   
   		 EXECUTE sp_executesql @VSQLQuery;   
   			   
   	    BEGIN TRY   
   		 -- Load the data critera of rows (TABLOCK required for MINIMAL LOG)   
   REP_TABLE   
   		 SET   @VSQLQuery = 'REP_' + @I_TABLE   
   		 PRINT 'Fill REP Table=' + @VSQLQuery + ' Time='  + cast(getdate() as   
   varchar)   
            SET   @VSQLQuery = 'INSERT INTO ' + @VSQLQuery + ' WITH (TABLOCK)   
   SELECT * FROM TEMP_' + @I_TABLE+ ' WHERE ' + @VParameterDefinition   
   		 PRINT '===================================================='	   
   		 PRINT @VSQLQuery   
   		 PRINT '===================================================='	   
            IF @I_MODE = 'SIMULATE'   
   		  BEGIN   
   		   PRINT 'Simulation mode this step is skipped'   
   		   PRINT '===================================================='   
             END   
   		 ELSE   
   		  BEGIN   
   		   EXECUTE (@VSQLQuery)   
    	       SELECT @Vcount = @@ROWCOUNT   
   		   PRINT 'Rows Loaded to ' + @VSQLQuery + ' = ' + CAST(@Vcount AS   
   VARCHAR(10))   
   		   PRINT '===================================================='	   
   	     END   
   		End TRY   
   		BEGIN CATCH   
           SELECT   
            @ErrorMessage = ERROR_MESSAGE();   
           RAISERROR (@ErrorMessage, 16, 1);   
           RETURN 4   
           END CATCH   
   		-- Clean-up		   
           SET   @VSQLQuery = ' IF  EXISTS (SELECT * FROM sys.objects   
             WHERE object_id = OBJECT_ID(''TEMP_'+@I_TABLE+''') AND type in   
   (''U''))   
             BEGIN   
               DROP TABLE TEMP_' + @I_TABLE +   
              ' END'   
           PRINT 'Clean-up Processing Table=' + @VSQLQuery + ' Time='  +   
   cast(getdate() as varchar)   
      
   		PRINT '===================================================='	   
      
   [continued in next message]   
      
   --- SoupGate-Win32 v1.05   
    * Origin: you cannot sedate... all the things you hate (1:229/2)   

[   << oldest   |   < older   |   list   |   newer >   |   newest >>   ]


(c) 1994,  bbs@darkrealms.ca