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 форматом.
Параметры инициализации:
Параметр |
Тип |
Описание |
|---|---|---|
|
|
Обязательный. Коннектор, содержащий параметры подключения к PostgreSQL/GreenPlum (хост, порт, пользователь, пароль, база данных) |
|
|
Метод сжатия данных. По умолчанию: |
|
|
Логгер для записи событий и ошибок. Если не указан, создается |
Атрибуты экземпляра:
- 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¶
Дополнительные компоненты¶
См. также:
CompressionMethod- Перечисление методов сжатия