Загрузка данных
Содержание раздела
Загрузка данных — параллельная запись данных в систему из внешнего источника данных. Функция предназначена для записи большого объема данных: от сотен до миллионов строк.
Загружать данные можно в любые поддерживаемые СУБД.
Поддерживаемые сущности
Загрузка данных возможна в следующие сущности:
С помощью загрузки данных можно управлять записями сущностей, как показано в таблице ниже.
Управление записями | Логическая таблица | Прокси-таблица | Standalone-таблица |
---|---|---|---|
Добавление новых записей | + | + | + |
Обновление текущих записей | + | Только в ADP | Только в ADP |
Удаление текущих записей | + | – | – |
Способы загрузки данных
Возможны следующие способы загрузки:
- загрузка из Kafka — загрузка данных из топика брокера сообщений Kafka, куда внешняя система предварительно загрузила данные;
- потоковая загрузка — загрузка данных напрямую из внешней системы без использования брокера Kafka.
Загрузка данных из Kafka
Загрузить данные из Kafka можно, отправив запрос INSERT SELECT FROM external_table по HTTP (с помощью метода query) или по JDBC. Подробнее о действиях по загрузке данных из Kafka см. в разделе Работа с данными > Загрузка данных из Kafka > Как загрузить данные.
Потоковая загрузка данных
Загрузить поток данных можно по HTTP с помощью метода upload. Подробнее о действиях по потоковой загрузке данных см. в разделе Работа с данными > Потоковая загрузка данных.
Управление загружаемыми записями
С помощью загрузки данных можно добавлять, обновлять и удалять записи в логических таблицах, а также добавлять и обновлять записи в прокси- и standalone-таблицах (см. секцию Поддерживаемые сущности).
Для управления записями, загружаемыми в логические таблицы, предназначено системное значение sys_op
:
0
— добавить новую запись или обновить текущую запись загруженными данными;1
— удалить запись таблицы, соответствующую загруженной.
В зависимости от способа загрузки данных значение sys_op
можно задать индивидуально для каждой записи или сразу для всех загружаемых записей.
При загрузке данных в прокси- и standalone-таблицы значение sys_op
указывать не нужно. Но если значения sys_op
указаны и загружаются в одноименный столбец таблицы, они сохраняются как указаны, без какой-либо интерпретации.
Как работает загрузка данных
При добавлении или обновлении записи все поля, указанные в запросе, заполняются значениями из запроса, а пропущенные поля — значениями по умолчанию.
Загрузка в логические таблицы
Записи загружаются в логическую таблицу так:
- если в текущей версии данных таблицы есть запись со значением первичного ключа, указанным в запросе, запись обновляется;
- иначе добавляется новая запись.
Загрузка в партиционированные таблицы и партиции
При загрузке данных в партиционированную таблицу система распределяет записи по соответствующим партициям. Если для записи не нашлось партиции с подходящим диапазоном партиционирования, эта запись игнорируется.
При загрузке данных напрямую в партицию загружаются только те записи, в которых значение ключа партиционирования соответствует одному из диапазонов партиционирования этой партиции.
Загрузка в прокси-таблицы и standalone-таблицы
Записи загружаются в прокси-таблицу или standalone-таблицу так:
- если в таблице еще нет записи со значением первичного ключа, указанным в запросе, добавляется новая запись;
- иначе:
- при загрузке в датасорс типа ADP запись обновляется значениями из запроса;
- при загрузке в датасорсы других типов результат зависит от типа датасорса: может вернуться ошибка или загрузиться запись с дублирующимся первичным ключом.
Целевые датасорсы
Данные загружаются в следующие датасорсы:
- выбранные для размещения данных таблицы, — если данные загружаются в логическую таблицу;
- содержащий таблицу-приемник, — если данные загружаются в прокси-таблицу или standalone-таблицу.
Расположением данных логической таблицы можно управлять с помощью запросов CREATE TABLE и DROP TABLE с ключевым словом DATASOURCE_TYPE
. Первый запрос позволяет выбрать датасорсы для размещения данных таблицы, второй — удалить данные таблицы из выбранного датасорса.