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.
Формат данных | СерДе |
---|---|
Авро | ![]() |
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
разделы в целевую таблицу. Если вы запускаете
SELECT
предложение
для таблицы с более чем 100 разделами запрос завершается ошибкой, если только Запрос SELECT
ограничен 100 разделами или менее.Сведения об обходе этого ограничения см. в разделе Использование CTAS и INSERT INTO для обхода ограничения 100 предел раздела.
Порядок столбцов
INSERT INTO
или CREATE TABLE AS SELECT
инструкции
ожидать, что секционированный столбец будет последним столбцом в списке проецируемых
столбцы в Оператор SELECT
.
Если исходная таблица не секционирована или секционирована по разным столбцам
по сравнению с целевой таблицей запросы типа
INSERT INTO таблица_назначения
ВЫБРАТЬ * ОТ source_table
рассмотреть значения в
последний столбец исходной таблицы должен быть значениями для столбца раздела в
таблица назначения.
Ресурсы
INSERT INTO
с разделением,
см. следующие ресурсы.Информацию о вставке секционированных данных в секционированную таблицу см. в разделе Использование CTAS и INSERT INTO для обхода 100 предел раздела.
Информацию о вставке неразделенных данных в секционированную таблицу см. в разделе Использование CTAS и INSERT INTO для ETL и данных. анализ.
Файлы, записанные в Amazon S3
Athena записывает файлы в исходные местоположения данных в Amazon S3 в результате Команда ВСТАВИТЬ
INSERT
создает новую
файл, а не добавление к существующему файлу.
SELECT
, если он есть. Афина
генерирует файл манифеста данных для каждого ВСТАВИТЬ
запрос. Манифест
отслеживает файлы, созданные запросом. Он сохраняется в результате запроса Athena
расположение в Amazon S3. Дополнительные сведения см. в разделе Идентификация выходных данных запроса.
файлы.Обнаружение потерянных файлов
Если оператор
CTAS
или INSERT INTO
не удается, возможно
что потерянные данные остаются в расположении данных. Поскольку Афина не удаляет
данные (даже частичные данные) из вашей корзины, возможно, вы сможете прочитать этот частичный
данные в последующих запросах. Чтобы найти потерянные файлы для проверки или удаления, вы
может использовать файл манифеста данных, который предоставляет Athena, для отслеживания списка файлов, которые должны быть
написано.
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.

Вставляет строки в существующую таблицу, указывая столбцы и значения. Указанный столбцы и связанные типы данных должны точно соответствовать столбцам и типам данных в таблица назначения.
Важно
Мы не рекомендуем вставлять строки, используя ЗНАЧЕНИЯ
, потому что 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