Sample code for 30+ languages & platforms
SQL Server

Decompress Gzip Data In-Place Using BinData

See more Gzip Examples

This example demonstrates how to use the UncompressBd method to decompress Gzip data stored in a BinData object.

The compressed .gz file is first loaded into memory. The UncompressBd method then decompresses the data in-place, meaning the original compressed bytes in the BinData object are replaced with the uncompressed data.

After decompression, the example writes the resulting data to a file. This approach is useful when working entirely in memory before saving or further processing the uncompressed data.

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
    DECLARE @iTmp0 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 demonstrates how to decompress Gzip data stored in a BinData object.
    -- The decompression is done in-place, replacing the compressed data with the original data.

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

    DECLARE @bd int
    EXEC @hr = sp_OACreate 'Chilkat.BinData', @bd OUT

    -- Load a .gz file into BinData:
    EXEC sp_OAMethod @bd, 'LoadFile', @success OUT, 'example.txt.gz'
    IF @success = 0
      BEGIN
        EXEC sp_OAGetProperty @bd, 'LastErrorText', @sTmp0 OUT
        PRINT @sTmp0
        EXEC @hr = sp_OADestroy @gzip
        EXEC @hr = sp_OADestroy @bd
        RETURN
      END


    EXEC sp_OAGetProperty @bd, 'NumBytes', @iTmp0 OUT
    PRINT 'Compressed size (bytes): ' + @iTmp0

    -- Uncompress the data in-place:
    EXEC sp_OAMethod @gzip, 'UncompressBd', @success OUT, @bd
    IF @success = 0
      BEGIN
        EXEC sp_OAGetProperty @gzip, 'LastErrorText', @sTmp0 OUT
        PRINT @sTmp0
        EXEC @hr = sp_OADestroy @gzip
        EXEC @hr = sp_OADestroy @bd
        RETURN
      END


    EXEC sp_OAGetProperty @bd, 'NumBytes', @iTmp0 OUT
    PRINT 'Decompressed size (bytes): ' + @iTmp0

    -- Save the uncompressed data to a file:
    EXEC sp_OAMethod @bd, 'WriteFile', @success OUT, 'example.txt'
    IF @success = 0
      BEGIN
        EXEC sp_OAGetProperty @bd, 'LastErrorText', @sTmp0 OUT
        PRINT @sTmp0
        EXEC @hr = sp_OADestroy @gzip
        EXEC @hr = sp_OADestroy @bd
        RETURN
      END


    PRINT 'File successfully uncompressed to example.txt'

    EXEC @hr = sp_OADestroy @gzip
    EXEC @hr = sp_OADestroy @bd


END
GO