PGPackReader¶
- class PGPackReader(fileobj)¶
- Параметры:
fileobj (BufferedReader) – Файловый объект для чтения
Основной класс для чтения файлов формата PGPack.
Описание:
Осуществляет полный цикл чтения PGPack файлов: проверку сигнатуры, распаковку метаданных, декомпрессию данных и предоставление интерфейса для доступа к данным в различных форматах.
Алгоритм инициализации:
Проверка сигнатуры
PGPACK\n\x00Чтение и проверка CRC32 метаданных
Распаковка zlib метаданных
Разбор структуры колонок и типов данных
Чтение параметров сжатия
Инициализация декомпрессора данных
Создание объекта
PGCopyReaderдля чтения данных
Атрибуты:
- metadata: bytes¶
Распакованные метаданные в JSON формате.
- columns: list[str]¶
Список имен колонок.
- 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.