Skip to main content

PGPack format

Storage format for PGCopy dump packed into LZ4, ZSTD or uncompressed with meta data information packed into zlib

PGPack structure

  • header b"PGPACK\n\x00" 8 bytes
  • unsigned long integer zlib.crc32 for packed metadata 4 bytes
  • unsigned long integer zlib packed metadata length 4 bytes
  • zlib packed metadata
  • unsigned char compression method 1 byte
  • unsigned long long integer packed pgcopy data length 8 bytes
  • unsigned long long integer unpacked pgcopy data length 8 bytes
  • packed pgcopy data

Installation

From pip

pip install pgpack

From local directory

pip install .

From git

pip install git+https://github.com/0xMihalich/pgpack

Metadata format

Metadata for PGCopy dump contained Column names and OID Types

Decompressed metadata structure

list[
    list[
        column number int,
        list[
            column name str,
            column oid int,
            column lengths int,
            column scale int,
            column nested int,
        ]
    ]
]

Compression methods

  • NONE (value = 0x02) PGCopy dump without compression
  • LZ4 (value = 0x82) PGCopy dump with lz4 compression
  • ZSTD (value = 0x90) PGCopy dump with zstd compression

Get ENUM for set compression method

from pgpack import CompressionMethod

compression_method = CompressionMethod.NONE  # no compression
compression_method = CompressionMethod.LZ4  # lz4 compression
compression_method = CompressionMethod.ZSTD  # zstd compression (default)

Class PGPackReader

Initialization parameters

  • fileobj - BufferedReader object (file, BytesIO e t.c)

Methods and attributes

  • metadata - metadata in bytes
  • columns - List columns names
  • pgtypes - List PGOid for all columns
  • pgparam - List PGParam for all columns
  • pgcopy_compressed_length - integer packed pgcopy data length
  • pgcopy_data_length - integer unpacked pgcopy data length
  • compression_method - CompressionMethod object
  • compression_stream - BufferedReader object for decompress data
  • pgcopy_start - integer offset for start pgcopy compressed data
  • pgcopy - PGCopyReader object
  • to_rows() - Method for reading uncompressed PGCopy data as generator python objects
  • to_pandas() - Method for reading uncompressed PGCopy data as pandas.DataFrame
  • to_polars() - Method for reading uncompressed PGCopy data as polars.DataFrame
  • to_bytes() - Method for reading uncompressed PGCopy data as generator bytes

Class PGPackWriter

Initialization parameters

  • fileobj - BufferedWriter object (file, BytesIO e t.c)
  • metadata - metadata in bytes (default is None)
  • compression_method - CompressionMethod object (default is CompressionMethod.ZSTD)

Methods and attributes

  • columns - List columns names
  • pgtypes - List PGOid for all columns
  • pgparam - List PGParam for all columns
  • pgcopy_compressed_length - integer packed pgcopy data length set to 0 as initialized
  • pgcopy_data_length - integer unpacked pgcopy data length set to -1 as initialized
  • pgcopy_start - integer offset for start pgcopy compressed data set to current offset as initialized
  • pgcopy - PGCopyWriter object
  • from_rows(dtype_data) - Write PGPack file from python objects. Parameter: dtype_data as python iterable object
  • from_pandas(data_frame) - Write PGPack file from pandas.DataFrame. Parameter: data_frame as pandas.DataFrame
  • from_polars(data_frame) - Write PGPack file from polars.DataFrame. Parameter: data_frame as polars.DataFrame
  • from_bytes(bytes_data) - Write PGPack file from bytes. Parameter: bytes_data as bytes iterable object

Errors

  • PGPackError - Base PGPack error
  • PGPackHeaderError - Error header signature
  • PGPackMetadataCrcError - Error metadata crc32
  • PGPackModeError - Error fileobject mode

Metadata

Release files for pgpack 0.3.2.3

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Built distribution (wheel)

Table of built distributions (wheels) for pgpack 0.3.2.3
File Interpreter ABI Platform
pgpack-0.3.2.3-py3-none-any.whl Python 3 none any Details

Release files / pgpack-0.3.2.3-py3-none-any.whl

Download URL pgpack-0.3.2.3-py3-none-any.whl
Size 12.3 kB
Tags Python 3
SHA-256 checksum
How to use checksums
8f33f2500bed1f0ee5bc2e618dd1f5396daf068b891256572e111fb67d12ce92
BLAKE2b-256 checksum
How to use checksums
d0a02a55ad29cde6c1d3ad47bc246defd434507175f02004d0d9347a90800e38
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.13.7
Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page