PGCopy dump packed into LZ4, ZSTD or uncompressed with meta data information packed into zlib.
Project description
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
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file pgpack-0.3.0.8.tar.gz.
File metadata
- Download URL: pgpack-0.3.0.8.tar.gz
- Upload date:
- Size: 9.9 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.10.11
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
bc295085f2b77deae9d9e121a0853e058f397624e2592fb4fa58e346198fcc31
|
|
| MD5 |
499b134542e481f09e62237dafb9487f
|
|
| BLAKE2b-256 |
dd1e59c4ff14f4364d65d9c602e41201f846580c4bdd56d18d0bb07523af624c
|
File details
Details for the file pgpack-0.3.0.8-py3-none-any.whl.
File metadata
- Download URL: pgpack-0.3.0.8-py3-none-any.whl
- Upload date:
- Size: 12.0 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.10.11
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
bb345bb8d20af4888cc636b5937f345b6fecd8378fb6116b6c746beb63d9f163
|
|
| MD5 |
7d29b9d1a1650d6d9ac77a9c3b10dbe8
|
|
| BLAKE2b-256 |
25ad5bd53b58000d02e1f61669845389215ae580acf7053e93037b8719ae2b10
|