Загрузка данных с помощью INSERT
В этой теме описывается, как загружать данные в Selena с помощью SQL оператора - INSERT.
Подобно MySQL и многим другим системам управления базами данных, Selena поддерживает загр узку данных во внутреннюю таблицу с помощью INSERT. Вы можете вставить одну или несколько строк напрямую с помощью предложения VALUES для тестирования функции или DEMO. Вы также можете вставить данные, определенные результатами запроса, во внутреннюю таблицу из внешней таблицы. Начиная с Selena v1.5.2, вы можете напрямую загружать данные из файлов в облачном хранилище, используя команду INSERT и табличную функцию FILES().
Selena v1.5.2 дополнительно поддерживает перезапись данных в таблицу с помощью INSERT OVERWRITE. Оператор INSERT OVERWRITE интегрирует следующие операции для реализации функции перезаписи:
- Создает временные partitions в соответствии с partitions, которые хранят исходные данные.
- Вставляет данные во временные partitions.
- Меняет местами исходные partitions с временными partitions.
ПРИМЕЧАНИЕ
Если вам необходимо проверить данные перед их перезаписью, вместо использования INSERT OVERWRITE вы можете следовать вышеуказанным процедурам, чтобы перезаписать ваши данные и проверить их перед заменой partitions.
Начиная с v1.5.2, Selena поддерживает н овую семантику - Dynamic Overwrite для INSERT OVERWRITE с partitioned таблицами. Для получения дополнительной информации см. Dynamic 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 создает временные partitions для partitions, которые хранят исходные данные, вставляет новые данные во временные partitions и меняет местами исходные partitions с временными partitions. Все эти операции выполняются на узле FE Leader. Следовательно, если узел FE Leader выходит из строя во время выполнения команды INSERT OVERWRITE, вся транзакция загрузки завершится ошибкой, и временные partitions будут усечены.