read_dump¶
- PGPackDumper.read_dump(
- fileobj,
- query=None,
- table_name=None,
- )
- Параметры:
fileobj (BufferedWriter) – Файловый объект для записи данных
query (str | None) – SQL-запрос для выборки данных
table_name (str | None) – Имя таблицы для выборки данных
- Результат:
Trueесли дамп успешно создан- Тип результата:
bool
Чтение данных из PostgreSQL/GreenPlum и создание дампа в PGPack формате.
Описание:
Метод выполняет выборку данных из PostgreSQL/GreenPlum и записывает их в файл в PGPack формате. PGPack формат - это специализированный бинарный формат, оптимизированный для быстрой передачи данных между PostgreSQL/GreenPlum и внешними системами.
Метод предоставляет два способа выборки данных:
Через SQL-запрос (параметр
query)Через указание имени таблицы (параметр
table_name)
SQL-запрос имеет приоритет, поэтому, в случае передачи обоих параметров, метод проигнорирует указанную таблицу.
Параметры:
Параметр |
Тип |
Описание |
|---|---|---|
|
|
Обязательный. Файловый объект, открытый в бинарном режиме записи. Данные будут записаны в этот объект. |
|
|
SQL-запрос для выборки данных. Если указан, параметр |
|
|
Имя таблицы для полной выборки данных. Используется только если |
Возвращаемое значение:
True- дамп успешно создан и записан в файл
Исключения:
PGPackDumperReadError- ошибка при чтении данных или создании дампа
Примеры использования:
# Пример 1: Создание дампа с помощью SQL-запроса
from pgpack_dumper import PGPackDumper, PGConnector
connector = PGConnector(host="localhost", port=5432, dbname="mydb")
dumper = PGPackDumper(connector=connector)
# Создание дампа с фильтрацией данных
with open("users_dump.pgpack", "wb") as f:
query = "SELECT id, name, email FROM users WHERE created_at > '2024-01-01'"
dumper.read_dump(
fileobj=f,
query=query
)
# Пример 2: Создание дампа всей таблицы
with open("products_dump.pgpack", "wb") as f:
dumper.read_dump(
fileobj=f,
table_name="public.products" # Полная выборка из таблицы products
)
# Пример 3: Выгрузка с использованием схемы
with open("sales_dump.pgpack", "wb") as f:
dumper.read_dump(
fileobj=f,
table_name="sales.monthly" # Таблица monthly в схеме sales
)
Особенности работы:
Формат данных: Данные записываются в PGPack формате, который включает: * Заголовок с метаданными таблицы (типы данных, размеры колонок) * Блоки данных со сжатием (если указано в настройках PGPackDumper) * Информацию о PostgreSQL типах данных
Производительность: Метод использует COPY протокол PostgreSQL для потоковой передачи данных
Сжатие: Данные сжимаются в соответствии с настройками
compression_methodв PGPackDumperМетаданные: Автоматически извлекаются и сохраняются метаданные таблицы
После успешного выполнения файловый объект закрывается автоматически
Рекомендации:
Для больших таблиц используйте фильтры в запросах для разбиения на части
Убедитесь, что файл открыт в бинарном режиме записи (
"wb")Для инкрементальных дампов используйте временные метки в WHERE-условиях
Проверяйте доступ к таблицам и соответствующие права пользователя
Обработка ошибок:
try:
with open("dump.pgpack", "wb") as f:
success = dumper.read_dump(f, table_name="my_schema.my_table")
except PGPackDumperReadError as e:
print(f"Ошибка чтения: {e}")
raise e
Примечания:
PGPack формат специфичен для PostgreSQL/GreenPlum
Поддерживаются все стандартные типы данных PostgreSQL
Метод автоматически определяет и адаптируется к версии СУБД (PostgreSQL или GreenPlum)
Для работы с GreenPlum требуется соответствующий коннектор и права доступа
См. также:
write_dump - Запись дампа в PostgreSQL/GreenPlum
CompressionMethod- Методы сжатия данных