PGCopyReader¶
- class PGCopyReader(file, pgtypes=[])¶
- Параметры:
file (BufferedReader) – Файловый объект с бинарными данными PGCOPY
pgtypes (list[PGOid]) – Список OID типов данных колонок (опционально)
Основной класс для чтения бинарного формата PGCOPY.
Описание:
Парсит заголовок и данные бинарного формата PostgreSQL COPY, предоставляя интерфейс для построчного чтения данных. Поддерживает автоматическое определение типов данных или чтение сырых байтов.
Алгоритм работы:
Проверка сигнатуры файла (
PGCOPY\n\xff\r\n\x00)Чтение флагов и заголовка
Определение количества колонок
Инициализация функций чтения для типов данных
Последовательное чтение записей
Атрибуты:
- num_columns: int¶
Количество колонок в данных.
- num_rows: int¶
Количество строк в данных.
- postgres_dtype: list[PostgreSQLDtype]¶
Список типов данных для каждой колонки.
- is_oid_enable: bool¶
Флаг включения OID в заголовке.
Методы:
- read_row()¶
- Результат:
Генератор значений одной строки
- Тип результата:
Generator[Any, None, None]
Чтение одной строки данных построчно по колонкам.
- to_rows()¶
- Результат:
Генератор списков строк
- Тип результата:
Generator[list[Any], None, None]
Чтение всех строк данных.
- tell()¶
- Результат:
Текущая позиция в файле
- Тип результата:
int
Получение позиции чтения.
- close()¶
Закрытие файлового объекта.
Строковое представление:
При выводе в консоли показывает таблицу с информацией о колонках:
<PGCopy dump reader>
┌─────────────────┬─────────────────┐
│ Column Number │ PostgreSQL Type │
╞═════════════════╪═════════════════╡
│ Column_0 │ int4 │
├─────────────────┼─────────────────┤
│ Column_1 │ text │
└─────────────────┴─────────────────┘
Total columns: 2
Total rows: 1000
Особенности:
Автоматическая обработка заголовка бинарного формата
Поддержка как типизированного, так и сырого чтения
Потоковое чтение больших объемов данных
Корректная обработка массивов и сложных типов
Использование:
Для импорта данных из бинарных дампов PostgreSQL/Greenplum.