Amazon S3 데이터를 RDS for PostgreSQL로 가져오기

Amazon S3 데이터를 RDS for PostgreSQL로 가져오기 (파일 형식)

aws_s3 확장의 table_import_from_s3 함수를 사용해 Amazon S3 버킷에서 데이터를 가져오는 방법을 설명할게요. 참고 정보는 aws_s3.table_import_from_s3 문서를 참고하세요.

출처: 문서

본문

Amazon S3 버킷의 데이터를 aws_s3 확장의 table_import_from_s3 함수로 가져와요. 참고 정보는 aws_s3.table_import_from_s3 문서를 참고하세요.

참고

다음 예시들은 Amazon S3 버킷에 대한 접근을 허용하기 위해 IAM 역할 방식을 사용해요. 그래서 aws_s3.table_import_from_s3 함수 호출에 자격 증명 매개변수가 포함되지 않아요.

다음은 전형적인 예시예요.

postgres=> SELECT aws_s3.table_import_from_s3(
   't1',
   '',
   '(format csv)',
   :'s3_uri'
);

매개변수는 다음과 같아요.

  • t1 – 데이터를 복사할 PostgreSQL DB 인스턴스의 테이블 이름이에요.
  • '' – 데이터베이스 테이블의 선택적 열 목록이에요. 이 매개변수를 사용해 S3 데이터의 어떤 열이 테이블의 어떤 열에 들어갈지 지정할 수 있어요. 열을 지정하지 않으면 모든 열이 테이블로 복사돼요. 열 목록 사용 예시는 "사용자 지정 구분 기호를 사용하는 Amazon S3 파일 가져오기" 문서를 참고하세요.
  • (format csv) – PostgreSQL COPY 인자예요. 복사 프로세스는 PostgreSQL COPY 명령의 인자와 형식을 사용해 데이터를 가져와요. 형식 선택 옵션에는 이 예시에서 보이는 쉼표로 구분된 값(CSV), text, binary가 있어요. 기본값은 text예요.
  • s3_uri – Amazon S3 파일을 식별하는 정보가 담긴 구조체예요. aws_commons.create_s3_uri 함수를 사용해 s3_uri 구조체를 만드는 예시는 "Amazon S3 데이터 가져오기 개요" 문서를 참고하세요.

이 함수에 대한 자세한 정보는 aws_s3.table_import_from_s3 문서를 참고하세요.

aws_s3.table_import_from_s3 함수는 텍스트(text)를 반환해요. Amazon S3 버킷에서 다른 종류의 파일을 가져오려면 다음 예시 중 하나를 참고하세요.

참고

0바이트 파일을 가져오면 오류가 발생해요.

주제 (Topics)

  • 사용자 지정 구분 기호를 사용하는 Amazon S3 파일 가져오기
  • 압축된(gzip) Amazon S3 파일 가져오기
  • 인코딩된 Amazon S3 파일 가져오기

사용자 지정 구분 기호를 사용하는 Amazon S3 파일 가져오기

다음 예시는 사용자 지정 구분 기호를 사용하는 파일을 가져오는 방법을 보여줘요. 또한 aws_s3.table_import_from_s3 함수의 column_list 매개변수를 사용해 데이터베이스 테이블의 어디에 데이터를 넣을지 제어하는 방법도 보여줘요.

이 예시에서는 다음 정보가 Amazon S3 파일에서 파이프(|)로 구분된 열로 정리되어 있다고 가정해요.

1|foo1|bar1|elephant1
2|foo2|bar2|elephant2
3|foo3|bar3|elephant3
4|foo4|bar4|elephant4
...

사용자 지정 구분 기호를 사용하는 파일을 가져오려면

가져온 데이터를 위한 테이블을 데이터베이스에 생성해요.

postgres=> CREATE TABLE test (a text, b text, c text, d text, e text);

aws_s3.table_import_from_s3 함수를 다음 형식으로 사용해 Amazon S3 파일의 데이터를 가져와요. 파일을 지정하기 위해 aws_commons.create_s3_uri 함수 호출을 aws_s3.table_import_from_s3 함수 호출 안에 인라인으로 넣을 수 있어요.

postgres=> SELECT aws_s3.table_import_from_s3(
   'test',
   'a,b,d,e',
   'DELIMITER ''|''',
   aws_commons.create_s3_uri('amzn-s3-demo-bucket', 'pipeDelimitedSampleFile', 'us-east-2')
);

데이터는 이제 테이블의 다음 열에 들어 있어요.

postgres=> SELECT * FROM test;
a | b | c | d | e
---+------+---+---+------+-----------
1 | foo1 | | bar1 | elephant1
2 | foo2 | | bar2 | elephant2
3 | foo3 | | bar3 | elephant3
4 | foo4 | | bar4 | elephant4

압축된(gzip) Amazon S3 파일 가져오기

다음 예시는 gzip으로 압축된 Amazon S3 파일을 가져오는 방법을 보여줘요. 가져올 파일에는 다음 Amazon S3 메타데이터가 있어야 해요.

  • 키(Key): Content-Encoding
  • 값(Value): gzip

AWS Management Console을 사용해 파일을 업로드하면 시스템이 일반적으로 메타데이터를 적용해요. AWS Management Console, AWS CLI 또는 API를 사용해 Amazon S3에 파일을 업로드하는 방법은 Amazon Simple Storage Service 사용자 가이드의 "객체 업로드" 문서를 참고하세요. Amazon S3 메타데이터 및 시스템 제공 메타데이터에 대한 자세한 내용은 Amazon Simple Storage Service 사용자 가이드의 "Amazon S3 콘솔에서 객체 메타데이터 편집" 문서를 참고하세요.

다음과 같이 gzip 파일을 RDS for PostgreSQL DB 인스턴스로 가져와요.

postgres=> CREATE TABLE test_gzip(id int, a text, b text, c text, d text);
postgres=> SELECT aws_s3.table_import_from_s3(
 'test_gzip', '', '(format csv)',
 'amzn-s3-demo-bucket', 'test-data.gz', 'us-east-2'
);

인코딩된 Amazon S3 파일 가져오기

다음 예시는 Windows-1252 인코딩이 적용된 Amazon S3 파일을 가져오는 방법을 보여줘요.

postgres=> SELECT aws_s3.table_import_from_s3(
 'test_table', '', 'encoding ''WIN1252''',
 aws_commons.create_s3_uri('amzn-s3-demo-bucket', 'SampleFile', 'us-east-2')
);

더 알아보기 (Learn more)