read_dump¶
- NativeDumper.read_dump(
- fileobj,
- query=None,
- table_name=None,
- )
- Параметры:
fileobj (BufferedWriter) – Файловый объект для записи данных
query (str | None) – SQL-запрос для выборки данных
table_name (str | None) – Имя таблицы для выборки данных
- Результат:
Trueесли дамп успешно создан- Тип результата:
bool
Чтение данных из ClickHouse и создание дампа в Native формате.
Описание:
Метод выполняет выборку данных из ClickHouse и записывает их в файл в Native формате. Native формат - это бинарный формат ClickHouse, оптимизированный для быстрой передачи данных.
Метод предоставляет два способа выборки данных:
Через SQL-запрос (параметр
query)Через указание имени таблицы (параметр
table_name)
SQL-запрос имеет приоритет, поэтому, в случае передачи обоих параметров, метод проигнорирует указанную таблицу.
Параметры:
Параметр |
Тип |
Описание |
|---|---|---|
|
|
Обязательный. Файловый объект, открытый в бинарном режиме записи. Данные будут записаны в этот объект. |
|
|
SQL-запрос для выборки данных. Если указан, параметр |
|
|
Имя таблицы для полной выборки данных. Используется только если |
Возвращаемое значение:
True- дамп успешно создан и записан в файл
Исключения:
ClickhouseServerError- ошибка сервера ClickHouse при выполнении запросаNativeDumperValueError- если не указаны ниquery, ниtable_nameNativeDumperReadError- любая другая ошибка
Примеры использования:
# Пример 1: Создание дампа с помощью SQL-запроса
from native_dumper import NativeDumper, CHConnector
connector = CHConnector(host="localhost", port=8123)
dumper = NativeDumper(connector=connector)
# Создание дампа с фильтрацией данных
with open("users_dump.bin", "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.bin", "wb") as f:
dumper.read_dump(
fileobj=f,
table_name="shop.products" # Полная выборка из таблицы products
)
# Пример 3: Инкрементальная выгрузка
with open("incremental_dump.bin", "ab") as f: # Режим добавления
query = """
SELECT * FROM events
WHERE event_date = today()
AND processed = 0
"""
dumper.read_dump(f, query=query)
Особенности работы:
Формат данных: Данные записываются в ClickHouse Native формате, который включает: * Заголовок с метаданными * Блоки данных со сжатием (если указано в настройках NativeDumper) * Информацию о типах данных колонок
Производительность: Метод использует потоковую передачу данных для работы с большими объемами
Сжатие: Данные сжимаются в соответствии с настройками
compression_methodв NativeDumperПосле успешного выполнения файловый объект закрывается автоматически
Рекомендации:
Для таблиц с миллионами строк используйте фильтры в запросах
Для инкрементальных дампов используйте параметры в WHERE-условиях
Проверяйте возвращаемое значение метода для обработки ошибок
Обработка ошибок:
try:
with open("dump.bin", "wb") as f:
success = dumper.read_dump(f, table_name="my_table")
except Exception as e:
print(f"Ошибка: {e}")
raise e
Примечания:
Native формат специфичен для ClickHouse и не совместим с другими СУБД
Размер дампа зависит от объема данных и степени сжатия
Метод автоматически обрабатывает разные типы данных ClickHouse
Для экспорта в другие форматы используйте дополнительные методы конвертации
См. также:
write_dump - Запись дампа в ClickHouse
CompressionMethod- Методы сжатия данных