PGPackReader

class PGPackReader(fileobj)
Параметры:

fileobj (BufferedReader) – Файловый объект для чтения

Основной класс для чтения файлов формата PGPack.

Описание:

Осуществляет полный цикл чтения PGPack файлов: проверку сигнатуры, распаковку метаданных, декомпрессию данных и предоставление интерфейса для доступа к данным в различных форматах.

Алгоритм инициализации:

  1. Проверка сигнатуры PGPACK\n\x00

  2. Чтение и проверка CRC32 метаданных

  3. Распаковка zlib метаданных

  4. Разбор структуры колонок и типов данных

  5. Чтение параметров сжатия

  6. Инициализация декомпрессора данных

  7. Создание объекта PGCopyReader для чтения данных

Атрибуты:

metadata: bytes

Распакованные метаданные в JSON формате.

columns: list[str]

Список имен колонок.

pgtypes: list[PGOid]

Список OID типов данных PostgreSQL/GreenPlum.

pgparam: list[PGParam]

Список параметров типов данных.

compression_method: CompressionMethod

Метод сжатия данных (NONE, LZ4, ZSTD).

pgcopy_data_length: int

Размер несжатых данных в байтах.

pgcopy_compressed_length: int

Размер сжатых данных в байтах.

Методы:

to_rows()
Результат:

Генератор строк данных

Тип результата:

Generator[list[Any], None, None]

Преобразование в Python объекты (списки значений).

to_pandas()
Результат:

DataFrame pandas с корректными типами

Тип результата:

pandas.DataFrame

Конвертация в pandas DataFrame.

to_polars()
Результат:

DataFrame polars

Тип результата:

polars.DataFrame

Конвертация в polars DataFrame.

to_bytes()
Результат:

Генератор несжатых байтовых данных

Тип результата:

Generator[bytes, None, None]

Получение сырых несжатых данных PGCopy.

tell()
Результат:

Текущая позиция чтения

Тип результата:

int

Получение позиции в потоке данных.

close()

Закрытие файлового объекта и освобождение ресурсов.

Строковое представление:

При выводе в консоли показывает таблицу с информацией о структуре данных:

<PostgreSQL/GreenPlum compressed dump>
┌─────────────────┬─────────────────┐
│ Column Name     │ PostgreSQL Type │
╞═════════════════╪═════════════════╡
│ id              │ int4            │
├─────────────────┼─────────────────┤
│ name            │ text            │
└─────────────────┴─────────────────┘
Total columns: 2
Compression method: ZSTD
Unpacked size: 1048576 bytes
Compressed size: 262144 bytes
Compression rate: 25.00 %

Использование:

Для чтения архивов данных PostgreSQL/GreenPlum в формате PGPack.