SQL Server
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
-- 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