File size: 1,229 Bytes
fd342b4
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
#using CodecZlib
#using CSV
#using DataFrames

function compress_csv(input_path::String, output_path::String=input_path * ".gz")
    println("Compressing $input_path to $output_path...")
    
    open(input_path, "r") do input_io
        open(output_path, "w") do output_io
            stream = GzipCompressorStream(output_io)
            write(stream, read(input_io))
            close(stream)
        end
    end
    
    # Calculate compression ratio
    original_size = filesize(input_path)
    compressed_size = filesize(output_path)
    ratio = (1 - compressed_size / original_size) * 100
    
    println("Compression complete: $(round(original_size / 1024^2, digits=2)) MB → $(round(compressed_size / 1024^2, digits=2)) MB ($(round(ratio, digits=1))% reduction)")
    return output_path
end

function decompress_csv(input_path::String, output_path::String)
    println("Decompressing $input_path to $output_path...")
    
    open(input_path, "r") do input_io
        open(output_path, "w") do output_io
            stream = GzipDecompressorStream(input_io)
            write(output_io, read(stream))
            close(stream)
        end
    end
    
    println("Decompression complete!")
    return output_path
end