Загрузка данных с помощью INSERT
Эта тема описывает, как загружать данные в Selena с помощью SQL-оператора - INSERT.
Подобно MySQL и многим другим системам управления базами данных, Selena поддерживает загрузку данных во внутреннюю таблицу с помощью INSERT. Вы можете вставить одну или несколько строк напрямую с помощью предложения VALUES для тестирования функции или DEMO. Вы также можете вставить данные, определенные результатами запроса, во внутреннюю таблицу из внешней таблицы. Начиная с Selena v3.1, вы можете напрямую загружать данные из файлов в облачном хранилище, используя команду INSERT и табличную функцию FILES().
Selena v2.4 дополнительно поддерживает перезапись данных в таблицу с помощью INSERT OVERWRITE. Оператор INSERT OVERWRITE интегрирует следующие операции для реализации функции перезаписи:
- Создает временные разделы в соответствии с разделами, которые хранят исходные данные.
- Вставляет данные во временные разделы.
- Меняет местами исходные разделы с временными разделами.
ПРИМЕЧАНИЕ
Если вам нужно проверить данные перед их перезаписью, вместо использования INSERT OVERWRITE вы можете следовать приведенным выше процедурам для перезаписи ваших данных и проверки их перед заменой разделов.
Меры предосторожности
- Вы можете отменить синхронную транзакцию INSERT только нажав клавиши Ctrl и C в вашем MySQL-клиенте.
- Вы можете отправить асинхронную задачу INSERT, используя SUBMIT TASK.
- Что касается текущей версии Selena, транзакция INSERT по умолчанию завершается неудачей, если данные любых строк не соответствуют схеме таблицы. Например, транзакция INSERT завершается неудачей, если длина поля в любой строке превышает ограничение длины для соответствующего поля в таблице. Вы можете установить переменную сессии
enable_insert_strictвfalse, чтобы позволить транзакции продолжиться, отфильтровав строки, которые не соответствуют таблице. - Если вы часто выполняете оператор INSERT для загрузки небольших пакетов данных в Selena, генерируется чрезмерное количество версий данных. Это серьезно влияет на производительность запросов. Мы рекомендуем, чтобы в продакшене вы не загружали данные с помощью команды INSERT слишком часто или не использовали ее как рутину д ля ежедневной загрузки данных. Если ваше приложение или аналитический сценарий требует решений для загрузки потоковых данных или небольших пакетов данных отдельно, мы рекомендуем использовать Apache Kafka® в качестве источника данных и загружать данные через Routine Load.
- Если вы выполняете оператор INSERT OVERWRITE, Selena создает временные разделы для разделов, которые хранят исходные данные, вставляет новые данные во временные разделы и меняет местами исходные разделы с временными разделами. Все эти операции выполняются в узле Leader FE. Следовательно, если узел Leader FE выходит из строя во время выполнения команды INSERT OVERWRITE, вся транзакция загрузки завершится неудачей, и временные разделы будут усечены.