Как создать таблицы в БД ClickHouse на основе CSV

Моя цель - предложение широкого ассортимента товаров и услуг на постоянно высоком качестве обслуживания по самым выгодным ценам.

Привет, Хабр!

Когда я впервые знакомился с колоночно-ориентированной СУБД ClickHouse, я не смог найти подходящий инструмент (кроме встроенного в веб-интерфейс ClickHouse Cloud) для создания таблиц с нужными столбцами и типами данных на основе CSV файлов или Pandas датафреймов. Ни clickhouse-connect, ни clickhouse-driver не обладали такой функциональностью, как метод to_sql в SQLAlchemy.

Я хотел загрузить свой любимый набор данных о чемпионатах мира по автогонкам класса Формула-1 в ClickHouse, но вручную создавать 15 таблиц было слишком лениво. Хотелось просто скормить нужные CSV файлы скрипту и на выходе получить БД с нужными таблицами и данными внутри.

Когда я ранее знакомился с PySpark, я заметил, что многие data-профессионалы используют Pandas для определения схемы данных перед загрузкой файлов CSV в PySpark. И я подумал, почему бы не использовать Pandas для определения типов данных по столбцам?

Так я создал этот скрипт, которым хочу поделиться. Я надеюсь, что он поможет вам сэкономить немного времени, а мне даст возможность получить от вас пару фидбеков и идей для улучшения.

Я не уверен в полной совместимости типов данных между Pandas и ClickHouse: быстрый поиск дал противоречивые результаты, поэтому поправьте меня, если найдете какие-либо расхождения.

И будьте осторожны с replace_flag - если установлено значение True, то скрипт пересоздаст таблицы с тем же именем, если они уже существуют, поэтому вы можете потерять существующие данные в своей базе данных. Чтобы избежать этого, но также избежать дублирования данных, я рекомендую указать несуществующее имя базы данных в качестве database_name. Если установлено значение False в replace_flag, данные из ваших файлов CSV будут добавляться в существующие таблицы с тем же именем (конечно же, число столбцов и их типы данных должны совпадать).

Источник: https://habr.com/ru/articles/730470/


Интересные статьи

Интересные статьи

Что делать если перед вами стоит задача нагрузочного тестирования, в проекте используется postgres и хранятся персональные данные раскрытие которых недопустимо?В этой статье мы поговорим,...
Привет, Хабр! Я Алексей Коняев. Последние пару лет участвую в развитии платформы «Цифровой рабочий» в роли ведущего java-разработчика.Представьте, что вы приехали на экск...
Примечание: полный исходный код проекта, а также пояснения о его использовании и чтении можно найти на Github [здесь]. Я сделал перерыв в своей работе над магистерской диссертацией, чтобы потр...
SLA, оно же «service-level agreement» —соглашение-гарантия между заказчиком и поставщиком услуг о том, что получит клиент в плане обслуживания. Также в нем оговариваются компенсации в случае ...
Всем привет! Продолжаю свое исследование сферы финансов с точки зрения технологий. В прошлом материале мы изучали существующие торговые терминалы и их особенности, а сегодня предлагаю поговор...