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
разделы в целевую таблицу. Если вы запускаете
предложение
для таблицы с более чем 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