PGPackDumper

PGPackDumper(
connector,
compression_method=CompressionMethod.ZSTD,
logger=None,
)

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

Параметры:
  • connector (PGConnector) – Коннектор для подключения к PostgreSQL/GreenPlum

  • compression_method (CompressionMethod) – Метод сжатия данных

  • logger (Logger | None) – Логгер для записи событий

Исключение:

PGPackDumperError – При ошибках инициализации

Описание:

Внешний модуль pgpack-dumper входит в состав dbhose-airflow, но может быть установлен отдельно.

Установка модуля pgpack-dumper без установки dbhose-airflow

pip install pgpack-dumper

Линки на проект:

Часть кода написана на языке Cython, что обеспечивает более быструю работу по сравнению с языком Python.

Назначение класса PGPackDumper - обмен данными с серверами PostgreSQL и GreenPlum в PGPack формате.

Импорт модуля

from pgpack_dumper import (
    PGPackDumper,
    PGConnector,
)

connector = PGConnector(
    host="localhost",
    dbname="",
    user="my_user",
    password="my_password",  # noqa: S106
    port=5432,

)
dumper = PGPackDumper(connector)

PGPackDumper предоставляет функциональность для работы с PGPack форматом - специализированным бинарным форматом для эффективной передачи данных между PostgreSQL/GreenPlum и внешними системами.

Класс автоматически устанавливает соединение с сервером базы данных, определяет версию и инициализирует необходимые компоненты для работы с PGPack форматом.

Параметры инициализации:

Параметры конструктора PGPackDumper

Параметр

Тип

Описание

connector

PGConnector

Обязательный. Коннектор, содержащий параметры подключения к PostgreSQL/GreenPlum (хост, порт, пользователь, пароль, база данных)

compression_method

CompressionMethod

Метод сжатия данных. По умолчанию: CompressionMethod.ZSTD. Поддерживаемые методы: ZSTD, LZ4, NONE

logger

Logger | None

Логгер для записи событий и ошибок. Если не указан, создается DumperLogger по умолчанию

Атрибуты экземпляра:

connector: PGConnector

Коннектор для подключения к PostgreSQL/GreenPlum.

compression_method: CompressionMethod

Метод сжатия данных.

logger: Logger

Логгер для записи событий.

application_name: str

Параметр application_name для передачи в pg_stat_activity.

connect: Connection

Соединение с базой данных.

cursor: Cursor

Курсор для выполнения запросов.

copy_buffer: CopyBuffer

Буфер для операций COPY.

version: str

Версия сервера PostgreSQL/GreenPlum.

dbname: str

Имя базы данных.

is_readonly: bool

Запущена ли текущая сессия в режиме только чтение.

Ограничения и исключения:

  • Требуется корректный коннектор - должен содержать все необходимые параметры подключения

  • Поддержка PostgreSQL и GreenPlum - автоматическое определение типа СУБД и версии

  • Использование COPY протокола - для максимальной производительности при передаче данных

Примеры использования:

# Создание PGPackDumper с параметрами по умолчанию
from pgpack-dumper import PGPackDumper, PGConnector, CompressionMethod

connector = PGConnector(
    host="localhost",
    port=5432,
    user="postgres",
    password="password",
    dbname="mydatabase"
)

dumper = PGPackDumper(
    connector=connector,
    compression_method=CompressionMethod.ZSTD,
)

# Создание с кастомным логгером
import logging

custom_logger = logging.getLogger("pgpack_dumper")
custom_logger.setLevel(logging.DEBUG)

dumper_with_logger = PGPackDumper(
    connector=connector,
    logger=custom_logger
)

Обработка ошибок:

try:
    connector = PGConnector(host="localhost", port=5432, dbname="nonexistent")
    dumper = PGPackDumper(connector=connector)
except PGPackDumperError as e:
    print(f"Ошибка подключения: {e}")

try:
    dumper.read_dump("output.pgpack", query="SELECT * FROM nonexistent_table")
except PGPackDumperReadError as e:
    print(f"Ошибка чтения: {e}")

Примечания:

  • PGPack формат - оптимизированный бинарный формат для передачи данных PostgreSQL/GreenPlum

  • Поддерживает сжатие данных для уменьшения объема передаваемых данных

  • Автоматически определяет версию СУБД (PostgreSQL или GreenPlum)

  • Использует COPY протокол для максимальной производительности

  • Поддерживает передачу данных между различными источниками (файлы, другие базы данных, Python объекты)

  • Для больших объемов данных рекомендуется использовать ZSTD сжатие

Доступные методы класса и декоратор multiquery

Дополнительные компоненты

См. также: