Поддержка преобразования данных непосредственно во время вставки

Материал из Wiki - Факультет компьютерных наук
Версия от 14:43, 15 октября 2018; Aapoludnitsin (обсуждение | вклад)

(разн.) ← Предыдущая | Текущая версия (разн.) | Следующая → (разн.)
Перейти к: навигация, поиск
Компания Яндекс
Учебный семестр Осень 2018
Учебный курс 3-4-й курс
Максимальное количество студентов, выбравших проект: ?



Иногда у пользователя есть файл с данными некоторой структуры, и ему нужно загрузить их в таблицу в ClickHouse другой структуры. Это легко решается с помощью временной таблицы: - создаётся временная таблица такой же структуры, что и исходные данные; туда загружаются данные из файла; а затем вставляются в результирующую таблицу с одновременным преобразованием, с помощью запроса INSERT SELECT.

Но это - довольно громоздкое решение. Было бы лучше сделать так, чтобы данные преобразовывались прямо во время загрузки. Это можно представить в виде запроса INSERT SELECT из загружаемого потока данных:

INSERT INTO table (a, b) SELECT x, y + z FROM input(x UInt64, y Int32, z Int32)

Также можно рассмотреть ограниченные варианты. Например, игнорирование отдельных столбцов при загрузке из файла:

INSERT INTO table (a, IGNORE String, b) - при чтении будет игнорироваться второй столбец из файла (который будет считываться как столбец типа String).