INSERT INTO — Amazon Athena
INSERT INTO — Amazon AthenaРекомендации и ограниченияINSERT INTO…SELECTINSERT INTO…VALUES
Вставляет новые строки в целевую таблицу на основе оператора запроса SELECT который работает на исходной таблице или на основе набора VALUES , предоставленного как часть
заявление. Когда исходная таблица основана на базовых данных в одном формате, например CSV
или JSON, а целевая таблица основана на другом формате, таком как Parquet или ORC, вы
можно использовать INSERT INTO запросов для преобразования выбранных данных в целевые
формат таблицы.
Особенности и ограничения
При использовании запросов INSERT с Athena учитывайте следующее.
При выполнении запроса
INSERTк таблице с базовыми данными, которые зашифрован в Amazon S3, выходные файлы, которые пишет запросINSERTне шифруются по умолчанию.
Мы рекомендуем вам зашифроватьВСТАВИТЬрезультаты запроса, если вы вставляете в таблицы с зашифрованными данными.Дополнительные сведения о шифровании результатов запроса с помощью консоли см. Шифрование запроса Athena результаты хранятся в запросе Amazon S3 Encrypting Athena результаты при использовании JDBC или ODBC. Включить шифрование с помощью AWS CLI или Athena API, используйте
Конфигурация шифрованиясвойства действия StartQueryExecution для указания параметров шифрования Amazon S3. в соответствии с вашими требованиями.Для операторов
INSERT INTOожидаемая настройка владельца корзины не применяется к расположению целевого стола в Amazon S3. Параметр ожидаемого владельца корзины применяется только к Amazon S3.
расположение вывода, указанное вами для результатов запроса Athena. Для
дополнительные сведения см. в разделе Указание результата запроса.
местоположение с помощью консоли Athena.Для ACID-совместимых операторов
INSERT INTOсм.INSERT Раздел INTOтаблицы «Обновление айсберга» данные.
Поддерживаемые форматы и SerDes
Вы можете выполнить запрос INSERT для таблиц, созданных из данных с
следующих форматов и SerDes.
| Формат данных | СерДе |
|---|---|
Авро | hadoop.hive.serde2.avro.AvroSerDe |
JSON | org.apache.hive.hcatalog.data.JsonSerDe |
ОРЦ | org.apache.hadoop.hive.ql.io.orc.OrcSerde |
Паркет | org.apache.hadoop.hive.ql.io.parquet.serde.ParquetHiveSerDe |
Текстовый файл | org. ПримечаниеПоддерживаются файлы CSV, TSV и файлы с пользовательскими разделителями. |
Таблицы с сегментами не поддерживается
INSERT INTO не поддерживается для таблиц с сегментами. Для большего
информацию см. в разделе Разделение и группирование в Athena.
Федеративные запросы не поддерживается
INSERT INTO не поддерживается для федеративных запросов. Попытка сделать
поэтому может привести к сообщению об ошибке Эта операция в настоящее время не
поддерживается для внешних каталогов . Для получения информации о федеративных
запросы см. в разделе Использование федеративных запросов Amazon Athena.
Разбиение на разделы
Учтите пункты этого раздела при использовании разбиения на разделы с помощью INSERT
INTO или CREATE TABLE AS SELECT запросов.
Ограничения
Оператор INSERT INTO поддерживает запись максимум 100
разделы в целевую таблицу. Если вы запускаете предложение
для таблицы с более чем 100 разделами запрос завершается ошибкой, если только Запрос SELECT ограничен 100 разделами или менее.
Сведения об обходе этого ограничения см. в разделе Использование CTAS и INSERT INTO для обхода ограничения 100 предел раздела.
Порядок столбцов
INSERT INTO или CREATE TABLE AS SELECT инструкции
ожидать, что секционированный столбец будет последним столбцом в списке проецируемых
столбцы в Оператор SELECT .
Если исходная таблица не секционирована или секционирована по разным столбцам
по сравнению с целевой таблицей запросы типа рассмотреть значения в
последний столбец исходной таблицы должен быть значениями для столбца раздела в
таблица назначения. таблица_назначения ВЫБРАТЬ * ОТ source_table
Имейте это в виду, когда пытаетесь создать секционированную таблицу.
из неразделенной таблицы.
Ресурсы
INSERT INTO с разделением,
см. следующие ресурсы.Информацию о вставке секционированных данных в секционированную таблицу см. в разделе Использование CTAS и INSERT INTO для обхода 100 предел раздела.
Информацию о вставке неразделенных данных в секционированную таблицу см. в разделе Использование CTAS и INSERT INTO для ETL и данных. анализ.
Файлы, записанные в Amazon S3
Athena записывает файлы в исходные местоположения данных в Amazon S3 в результате Команда ВСТАВИТЬ
INSERT создает новую
файл, а не добавление к существующему файлу.
Расположение файлов зависит от
структуру таблицы и запрос SELECT , если он есть. Афина
генерирует файл манифеста данных для каждого ВСТАВИТЬ запрос. Манифест
отслеживает файлы, созданные запросом. Он сохраняется в результате запроса Athena
расположение в Amazon S3. Дополнительные сведения см. в разделе Идентификация выходных данных запроса.
файлы.Обнаружение потерянных файлов
Если оператор или INSERT INTO не удается, возможно
что потерянные данные остаются в расположении данных. Поскольку Афина не удаляет
данные (даже частичные данные) из вашей корзины, возможно, вы сможете прочитать этот частичный
данные в последующих запросах. Чтобы найти потерянные файлы для проверки или удаления, вы
может использовать файл манифеста данных, который предоставляет Athena, для отслеживания списка файлов, которые должны быть
написано.
Дополнительные сведения см. в разделе Идентификация выходных данных запроса.
файлы и DataManifestLocation.
INSERT INTO…SELECT
Задает запрос для выполнения в одной таблице, source_table , который определяет
строки для вставки во вторую таблицу, target_table . Если Запрос SELECT указывает столбцы в source_table ,
столбцы должны точно совпадать со столбцами в таблице .
Дополнительные сведения о запросах SELECT см. в разделе SELECT.
Сводка
ВСТАВИТЬ В таблицу_назначения ВЫБЕРИТЕ select_query FROM source_table_or_view
Примеры
Выберите все строки в таблице vancouver_pageviews и вставьте их в
таблица canada_pageviews :
INSERT INTO canada_pageviews ВЫБИРАТЬ * ОТ vancouver_pageviews;
Выберите только те строки в таблице vancouver_pageviews , где столбец даты имеет значение от 2019-07-01 и 2019-07-31 , а затем вставьте их в canada_july_pageviews :
ВСТАВИТЬ В canada_july_pageviews
ВЫБИРАТЬ *
ОТ vancouver_pageviews
ГДЕ дата
МЕЖДУ датой '2019-07-01'
И «2019-07-31»; Выберите значения в столбцах city и state в city_world таблица только из тех строк со значением usa в столбце country и вставьте их в город и штат столбцов в столбцах city_usa таблица:
ВСТАВИТЬ В СТРАНИЦЫ_города (город, штат)
ВЫБЕРИТЕ город, штат
ИЗ города_мира
WHERE country='usa' INSERT INTO.
..VALUESВставляет строки в существующую таблицу, указывая столбцы и значения. Указанный столбцы и связанные типы данных должны точно соответствовать столбцам и типам данных в таблица назначения.
Важно
Мы не рекомендуем вставлять строки, используя ЗНАЧЕНИЯ , потому что Athena
генерирует файлы для каждой операции INSERT . Это может вызвать множество мелких
файлы, которые будут созданы, и ухудшат производительность запросов к таблице. Для идентификации файлов
который создает запрос INSERT , проверьте файл манифеста данных. Для большего
информацию см. в разделе Работа с результатами запроса, последними запросами и выходными данными.
файлы.
Краткий обзор
ВСТАВИТЬ В таблицу_назначения [(col1,col2,...)]
ЗНАЧЕНИЯ (значение столбца1,значение столбца2,...)[
(значение столбца1,значение столбца2,.
..)][
...] Примеры
В следующих примерах таблица городов состоит из трех столбцов: id , город , штат , штат_девиз . столбец id имеет тип INT , а все остальные столбцы имеют тип ВАРЧАР .
Вставьте одну строку в таблицу городов со значениями всех столбцов
указано:
ВСТАВИТЬ В города ЗНАЧЕНИЯ (1,'Lansing','MI','Si quaeris peninsulam amoenamcircuspice')
Вставить две строки в таблицу городов :
ВСТАВИТЬ В города
ЗНАЧЕНИЯ (1, 'Лансинг', 'MI', 'Si quaeris peninsulam amoenamcircuspice'),
(3,'Boise','ID','Esto perpetua') Javascript отключен или недоступен в вашем браузере.
Чтобы использовать документацию Amazon Web Services, должен быть включен Javascript. Инструкции см. на страницах справки вашего браузера.
Условные обозначения документов
ВЫБРАТЬ
УДАЛИТЬ
ВСТАВИТЬ
ВСТАВИТЬ| Указатель документации Firebird → Firebird 2.1 Language Ref. Обновить → операторы DML → INSERT |
- ВСТАВИТЬ… ЗНАЧЕНИЯ ПО УМОЛЧАНИЮ
- ВОЗВРАТ пункт
- ОБЪЕДИНЕНИЕ разрешено при подаче SELECT
Доступно в: DSQL, ESQL, PSQL
Описание: Добавляет строки в таблицу базы данных или в одну или несколько таблиц, лежащих в основе представления. Значения полей могут быть указаны в предложении VALUES, они могут полностью отсутствовать (в обоих случаях вставляется ровно одна строка) или они могут исходить из оператора SELECT (от 0 до множества вставленных строк).
Синтаксис:
ВСТАВИТЬ [ТРАНЗАКЦИЯимя] INTO {имя_таблицы|имя представления} {ЗНАЧЕНИЯ ПО УМОЛЧАНИЮ | [()]} [ВОЗВРАТ<список_значений>[В<переменных>]]::=имя_столбца[имя_столбца...]
<источник_значения>::= ЗНАЧЕНИЯ (<список_значений>) |<список_значений>::=значение[значение...]<переменные>::= :имя_переменной[ :имя_переменной...]::= SELECT, набор результатов которого соответствует целевым столбцамОграничения
Директива TRANSACTION доступна только в ESQL.
Предложение RETURNING недоступно в ESQL.
Подпункт «INTO
» доступен только в PSQL.При возврате значений в переменную контекста NEW перед этим именем не должно стоять двоеточие («
:»).Начиная с версии 2.0 ни один столбец не может появляться в списке вставки более одного раза.
ВСТАВИТЬ… ЗНАЧЕНИЯ ПО УМОЛЧАНИЮ
Доступно в: DSQL, PSQL
Добавлено в: 2.1
Описание. Предложение DEFAULT VALUES позволяет вставлять запись без указания каких-либо значений ни напрямую, ни из инструкции SELECT. Это возможно только в том случае, если каждый столбец NOT NULL или CHECKed в таблице либо имеет допустимое значение по умолчанию, либо получает такое значение из триггера BEFORE INSERT.
Кроме того, триггеры, предоставляющие обязательные значения полей, не должны зависеть от наличия входных значений.
Пример:
вставить в журнал значения по умолчанию возвращаемое предложение entry_id
RETURNING
Доступно в: DSQL, PSQL
Добавлено в: 2.0
Изменено в: 2.1
Описание: Оператор INSERT, добавляющий не более чем к одной строке , может дополнительно включать предложение RETURNING для возврата значений из вставленной строки. Предложение, если оно присутствует, не обязательно должно содержать все вставляемые столбцы. а также может содержать другие столбцы или выражения. Возвращаемые значения отражают любые изменения, которые могли быть сделаны в триггерах BEFORE, но не в триггерах AFTER.
Примеры:
вставить в Scholars (имя, фамилия, адрес, телефон, адрес электронной почты) значения («Генри», «Хиггинс», «Уимпол-стрит, 27А», «3231212», ноль) возвращая фамилию, полное имя, idвставляем в гантели (имя, фамилия, iq) выберите fname, lname, iq из друзей в порядке iq rows 1 возврат id, firstname, iq в :id, :fname, :iq;
Примечания:
RETURNING поддерживается только для вставок VALUES и, начиная с версии 2.
1, для одноэлементных вставок SELECT.В DSQL оператор с предложением RETURNING всегда возвращает ровно одну строку. Если на самом деле запись не была вставлена, все поля в этой строке имеют значение
NULL. Это поведение может измениться в более поздних версиях Firebird. В PSQL, если строка не была вставлена, ничего не возвращается, и принимающие переменные сохраняют свои существующие значения.
UNION разрешено в подаче SELECT
Изменено в: 2.0
Описание: запрос SELECT, используемый в инструкции INSERT, теперь может быть UNION.
Пример:
вставить в Members (номер, имя)
выберите номер, имя из NewMembers, где Accepted = 1
союз
выберите номер, имя из SuspendedMembers, где Vindicated = 1 

расположение вывода, указанное вами для результатов запроса Athena. Для
дополнительные сведения см. в разделе Указание результата запроса.
местоположение с помощью консоли Athena.
hadoop.hive.serde2.avro.AvroSerDe
..)][
...]
..]

1, для одноэлементных вставок SELECT.