Amazon S3에서 RDS for PostgreSQL DB 인스턴스로 데이터 가져오기 - Amazon Relational Database Service

Amazon S3에서 RDS for PostgreSQL DB 인스턴스로 데이터 가져오기

aws_s3 확장의 table_import_from_s3 함수를 사용하여 Amazon 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), 텍스트 및 이진법이 있습니다. 기본값은 텍스트입니다.

  • 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 함수는 문자를 반환합니다. Amazon S3 버킷에서 가져올 다른 파일 종류를 지정하려면 다음 예 중 하나를 참조하세요.

참고

0바이트 파일을 가져오면 오류가 발생합니다.

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

다음 예제에서는 사용자 지정 구분 기호를 사용하는 파일을 가져오는 방법을 보여줍니다. 또한 column_list 함수의 aws_s3.table_import_from_s3 파라미터를 사용해 데이터베이스 테이블에서 데이터를 배치할 곳을 제어하는 방법을 보여줍니다.

이 예에서는 다음 정보가 Amazon S3 파일의 파이프로 구분된 열에 정리되어 있다고 가정합니다.

1|foo1|bar1|elephant1 2|foo2|bar2|elephant2 3|foo3|bar3|elephant3 4|foo4|bar4|elephant4 ...
사용자 지정 구분 기호를 사용하는 파일을 가져오려면
  1. 가져온 데이터에 대해 데이터베이스에서 테이블을 생성합니다.

    postgres=> CREATE TABLE test (a text, b text, c text, d text, e text);
  2. 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

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

다음 예에서는 gzip으로 압축된 Amazon S3에서 파일을 가져오는 방법을 보여줍니다. 가져오는 파일에 다음과 같은 Amazon S3 메타데이터가 있어야 합니다.

  • 키: Content-Encoding

  • 값: 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 파일을 PostgreSQL DB 인스턴스용 RDS로 가져옵니다.

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') );