INSERT INTO - Amazon Athena

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

INSERT INTO

SELECT 원본 테이블에서 실행되는 쿼리 설명을 기반으로 하거나 해당 설명의 일부로 제공된 VALUES 세트를 기반으로 하는 대상 테이블에 새 행을 삽입합니다. 원본 테이블이 CSV 또는 JSON과 같은 한 가지 형식의 기본 데이터를 기반으로 하고 대상 테이블이 Parquet 또는 ORC와 같은 다른 형식을 기반으로 하는 경우, INSERT INTO 쿼리를 사용하여 선택한 데이터를 대상 테이블의 형식으로 변환할 수 있습니다.

고려 사항 및 제한

INSERT 쿼리를 Athena와(과) 함께 사용할 때는 다음 사항을 고려하십시오.

중요

에서 암호화된 기본 데이터가 포함된 테이블에서 INSERT 쿼리를 실행할 때 Amazon S3 쿼리가 작성하는 출력 파일은 기본적으로 암호화되지 않습니다.INSERT 암호화된 데이터가 포함된 테이블에 삽입하는 경우 INSERT 쿼리 결과를 암호화할 것을 권장합니다.

콘솔을 사용한 쿼리 결과 암호화에 대한 자세한 내용은 Amazon S3에 저장된 쿼리 결과 암호화 단원을 참조하십시오. 또는 AWS CLI API를 사용하여 암호화를 활성화하려면 AthenaEncryptionConfiguration 작업의 StartQueryExecution 속성을 사용하여 요구 사항에 따라 암호화 옵션을 지정합니다.Amazon S3

지원되는 형식 및SerDes

다음 형식 및 INSERT를 사용하여 데이터에서 생성된 테이블에서 SerDes 쿼리를 실행할 수 있습니다.

데이터 형식 SerDe

Avro

org.apache.hadoop.hive.serde2.avro.AvroSerDe

JSON

org.apache.hive.hcatalog.data.JsonSerDe

ORC

org.apache.hadoop.hive.ql.io.orc.OrcSerde

Parquet

org.apache.hadoop.hive.ql.io.parquet.serde.ParquetHiveSerDe

텍스트 파일

org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe

참고

CSV, TSV 및 사용자 지정 구분 기호로 구분된 파일이 지원됩니다.

버킷팅된 테이블이 지원되지 않음

INSERT INTO은(는) 버킷팅된 테이블에서 지원되지 않습니다. 자세한 내용은 버킷팅과 분할 단원을 참조하십시오.

Partitioning

또는 INSERT INTO 쿼리와 함께 구문 분석을 사용할 때 이 단원의 점을 고려하십시오.CREATE TABLE AS SELECT

Limits

INSERT INTO 문은 대상 테이블에 최대 100개의 파티션 쓰기를 지원합니다. 100개 이상의 파티션이 있는 테이블에서 SELECT 절을 실행하면 SELECT 쿼리가 100개 이하의 파티션으로 제한되지 않는 한 쿼리가 실패합니다.

이 제한을 해결하는 방법에 대한 자세한 내용은 CTAS 및 INSERT INTO를 사용하여 100개 이상의 파티션이 있는 테이블 생성 단원을 참조하십시오.

열 순서

또는 INSERT INTO 문에서는 분할된 열이 CREATE TABLE AS SELECT 문에서 프로젝션된 열 목록의 마지막 열이 될 것으로 예상합니다.SELECT

원본 테이블이 분할되지 않았거나 대상 테이블과 다른 열에서 분할된 경우 INSERT INTO destination_table SELECT * FROM source_table 같은 쿼리는 원본 테이블의 마지막 열의 값을 대상 테이블의 파티션 열 값으로 간주합니다. 분할되지 않은 테이블에서 분할된 테이블을 만들려고 할 때 이 점을 염두에 두십시오.

Resources

파티셔닝과 함께 INSERT INTO를 사용하는 방법에 대한 자세한 내용은 다음 리소스를 참조하십시오.

Amazon S3에 작성되는 파일

Athena은(는) Amazon S3의 원본 데이터 위치에 파일을 INSERT 명령의 결과로서 작성합니다. 각 INSERT 작업은 기존 파일에 추가하는 게 아니라 새 파일을 생성합니다. 파일 위치는 테이블의 구조와 SELECT 쿼리가 있는 경우 그에 따라 달라집니다. Athena은(는) 각 INSERT 쿼리에 대한 데이터 매니페스트 파일을 생성합니다. 매니페스트는 쿼리가 작성한 파일을 추적합니다. Amazon S3의 Athena 쿼리 결과에 저장됩니다. 자세한 내용은 쿼리 출력 파일 식별 단원을 참조하십시오.

분리된 파일 찾기

CTAS 또는 INSERT INTO 문이 실패하는 경우 분리된 데이터가 데이터 위치에 남아있을 가능성이 있습니다. Athena는 버킷에서 데이터(부분 데이터 포함)를 삭제하지 않으므로 후속 쿼리에서 이러한 부분 데이터를 읽을 수도 있습니다. 검사 또는 삭제할 분리된 파일을 찾으려면 Athena에서 제공하는 데이터 매니페스트 파일을 사용하여 작성할 파일 목록을 추적할 수 있습니다. 자세한 내용은 쿼리 출력 파일 식별DataManifestLocation 단원을 참조하십시오.

INSERT INTO...SELECT

한 테이블 source_table에서 실행할 쿼리를 지정합니다. 그러면 두 번째 테이블 destination_table에 삽입할 행이 결정됩니다. 쿼리가 SELECT의 열을 지정하는 경우 해당 열은 source_table의 열과 정확하게 일치해야 합니다.destination_table

SELECT 쿼리에 대한 자세한 내용은 SELECT 단원을 참조하십시오.

Synopsis

INSERT INTO destination_table SELECT select_query FROM source_table_or_view

Examples

vancouver_pageviews 테이블의 모든 행을 선택한 다음 canada_pageviews 테이블에 삽입합니다.

INSERT INTO canada_pageviews SELECT * FROM vancouver_pageviews;

2019-07-01에서 2019-07-31 사이의 값이 포함된 date 열이 있는 vancouver_pageviews 테이블의 행을 선택한 다음 canada_july_pageviews에 삽입합니다.

INSERT INTO canada_july_pageviews SELECT * FROM vancouver_pageviews WHERE date BETWEEN date '2019-07-01' AND '2019-07-31';

country 열에 usa의 값이 포함된 행에서 cities_world 테이블의 citystate 열의 값을 선택한 다음 cities_usa 테이블의 citystate 열에 삽입합니다.

INSERT INTO cities_usa (city,state) SELECT city,state FROM cities_world WHERE country='usa'

INSERT INTO...VALUES

열 및 값을 지정하여 기존 테이블에 행을 삽입합니다. 지정된 열 및 관련 데이터 형식은 대상 테이블의 열 및 데이터 형식과 정확하게 일치해야 합니다.

중요

Athena이(가) 각 INSERT 작업에 대해 파일을 생성하기 때문에 VALUES을(를) 사용하여 행을 삽입하는 건 권장하지 않습니다. 이로 인해 작은 파일이 많이 생성되어 테이블의 쿼리 성능이 저하될 수 있습니다. INSERT 쿼리가 생성하는 파일을 식별하려면 데이터 매니페스트 파일을 검사합니다. 자세한 내용은 쿼리 결과, 출력 파일 및 쿼리 기록 작업 단원을 참조하십시오.

Synopsis

INSERT INTO destination_table [(col1,col2,...)] VALUES (col1value,col2value,...)[, (col1value,col2value,...)][, ...]

Examples

다음 예에서 도시 테이블에는 세 개의 열이 있습니다. id , city, state, state_motto. 열은 id 형식이고 기타 모든 열은 INT 형식입니다.VARCHAR

cities 테이블에 단일 행 하나를 삽입하고 모든 열 값을 지정합니다.

INSERT INTO cities VALUES (1,'Lansing','MI','Si quaeris peninsulam amoenam circumspice')

cities 테이블에 행 두 개를 삽입합니다.

INSERT INTO cities VALUES (1,'Lansing','MI','Si quaeris peninsulam amoenam circumspice'), (3,'Boise','ID','Esto perpetua')