Sample code for 30+ languages & platforms
SQL Server

Append Dir Tree to Existing Zip w/out Rewriting Entire Zip

See more Zip Examples

Demonstrates how to use the QuickAppend method to append a directory tree to an existing .zip archive. This method works by editing the existing .zip -- it does not rewrite or recompress the contents of the existing .zip. It is the fastest way to append additional files to a pre-existing large .zip archive.

Chilkat SQL Server Downloads

SQL Server
-- Important: See this note about string length limitations for strings returned by sp_OAMethod calls.
--
CREATE PROCEDURE ChilkatSample
AS
BEGIN
    DECLARE @hr int
    -- Important: Do not use nvarchar(max).  See the warning about using nvarchar(max).
    DECLARE @sTmp0 nvarchar(4000)
    DECLARE @success int
    SELECT @success = 0

    -- This example requires the Chilkat API to have been previously unlocked.
    -- See Global Unlock Sample for sample code.

    DECLARE @zip int
    EXEC @hr = sp_OACreate 'Chilkat.Zip', @zip OUT
    IF @hr <> 0
    BEGIN
        PRINT 'Failed to create ActiveX component'
        RETURN
    END

    -- The NewZip method only initializes the Zip object -- it does
    -- not create or write a .zip file.
    EXEC sp_OAMethod @zip, 'NewZip', @success OUT, 'notUsed.zip'
    IF @success = 0
      BEGIN
        EXEC sp_OAGetProperty @zip, 'LastErrorText', @sTmp0 OUT
        PRINT @sTmp0
        EXEC @hr = sp_OADestroy @zip
        RETURN
      END

    -- Add a references to all files in a directory tree.
    -- Note: this does not read or compress the file contents --
    -- it simply adds file references to the zip object.
    DECLARE @recurse int
    SELECT @recurse = 1
    EXEC sp_OAMethod @zip, 'AppendFiles', @success OUT, 'c:/temp/abc123/*', @recurse
    IF @success = 0
      BEGIN
        EXEC sp_OAGetProperty @zip, 'LastErrorText', @sTmp0 OUT
        PRINT @sTmp0
        EXEC @hr = sp_OADestroy @zip
        RETURN
      END

    -- Appends the contents of the zip object to the preExisting.zip
    -- zip archive.  preExisting.zip is opened, and the files
    -- referenced by this zip object are streamed in, compressed,
    -- and appended to the end of the archive.
    EXEC sp_OAMethod @zip, 'QuickAppend', @success OUT, 'preExisting.zip'
    IF @success = 0
      BEGIN
        EXEC sp_OAGetProperty @zip, 'LastErrorText', @sTmp0 OUT
        PRINT @sTmp0
        EXEC @hr = sp_OADestroy @zip
        RETURN
      END


    PRINT 'Success!'

    -- Note: Additional files, directory trees, or in-memory data
    -- can be appended by calling AddFile, AppendFiles,
    -- AddString, AddBd, AddSb, etc. multiple times.
    -- Whatever files and/or in-memory data that are referenced by
    -- this zip object will be appended to preExisting.zip when
    -- QuickAppend is called

    EXEC @hr = sp_OADestroy @zip


END
GO