Sample code for 30+ languages & platforms
SQL Server

Extract ZIP Files Without Preserving Directory Paths Using DiscardPaths

See more Zip Examples

This example demonstrates how to use the DiscardPaths property to extract files from a ZIP archive without recreating the stored directory structure.

When DiscardPaths is set to _TRUE_, all extracted files are written directly into the target extraction directory, and any stored ZIP path information is ignored.

This is useful when:

  • Flattening ZIP contents into a single directory
  • Ignoring stored subdirectory structures during extraction
  • Extracting only the files themselves without recreating folders

Suppose the ZIP archive contains:

docs/readme.txt
docs/manual.pdf
images/logo.png

Normally, extracting the ZIP would create:

output/docs/readme.txt
output/docs/manual.pdf
output/images/logo.png

But when DiscardPaths is set to _TRUE_, the extracted files become:

output/readme.txt
output/manual.pdf
output/logo.png

The stored ZIP directory paths are discarded during extraction.

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

    SELECT @success = 0

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

    -- Open an existing ZIP archive.
    EXEC sp_OAMethod @zip, 'OpenZip', @success OUT, 'example.zip'
    IF @success = 0
      BEGIN
        EXEC sp_OAGetProperty @zip, 'LastErrorText', @sTmp0 OUT
        PRINT @sTmp0
        EXEC @hr = sp_OADestroy @zip
        RETURN
      END

    -- Discard stored ZIP paths during extraction.
    -- 
    -- When DiscardPaths = 1, all files are extracted
    -- directly into the target directory without recreating
    -- the ZIP directory structure.
    EXEC sp_OASetProperty @zip, 'DiscardPaths', 1

    -- Extract all files to the output directory.
    -- 
    -- Even if the ZIP contains:
    -- 
    --     docs/readme.txt
    --     docs/manual.pdf
    --     images/logo.png
    -- 
    -- The extracted files become:
    -- 
    --     c:/output/readme.txt
    --     c:/output/manual.pdf
    --     c:/output/logo.png
    -- 
    DECLARE @numFilesUnzipped int
    EXEC sp_OAMethod @zip, 'Unzip', @numFilesUnzipped OUT, 'c:/output'

    IF @numFilesUnzipped < 0
      BEGIN
        EXEC sp_OAGetProperty @zip, 'LastErrorText', @sTmp0 OUT
        PRINT @sTmp0
        EXEC @hr = sp_OADestroy @zip
        RETURN
      END


    PRINT 'Number of files extracted = ' + @numFilesUnzipped

    EXEC sp_OAMethod @zip, 'CloseZip', NULL


    PRINT 'Files extracted successfully.'

    EXEC @hr = sp_OADestroy @zip


END
GO