aws_s3.query_export_to_s3 함수를 사용하여 쿼리 데이터 내보내기 - Amazon Relational Database Service

aws_s3.query_export_to_s3 함수를 사용하여 쿼리 데이터 내보내기

aws_s3.query_export_to_s3 함수를 호출하여 PostgreSQL 데이터를 Amazon S3으로 내보냅니다.

사전 조건

aws_s3.query_export_to_s3 함수를 사용하기 전에 다음 사전 조건을 충족해야 합니다.

다음 예제에서는 sample_table이라는 데이터베이스 테이블을 사용합니다. 이 예제에서는 amzn-s3-demo-bucket이라는 버킷으로 데이터를 내보냅니다. 예제 테이블과 데이터는 psql에서 다음 SQL 문을 사용하여 생성됩니다.

psql=> CREATE TABLE sample_table (bid bigint PRIMARY KEY, name varchar(80)); psql=> INSERT INTO sample_table (bid,name) VALUES (1, 'Monday'), (2,'Tuesday'), (3, 'Wednesday');

aws_s3.query_export_to_s3 호출

다음은 aws_s3.query_export_to_s3 함수를 호출하는 기본 방법을 보여줍니다.

이 예제에서는 s3_uri_1 변수를 사용하여 Amazon S3 파일을 식별하는 정보가 포함된 구조를 식별합니다. aws_commons.create_s3_uri 함수를 사용하여 구조를 생성합니다.

psql=> SELECT aws_commons.create_s3_uri( 'amzn-s3-demo-bucket', 'sample-filepath', 'us-west-2' ) AS s3_uri_1 \gset

파라미터가 다음 두 aws_s3.query_export_to_s3 함수 호출에 따라 달라도 이러한 예제에 대한 결과는 동일합니다. sample_table 표의 모든 행은 amzn-s3-demo-bucket이라는 버킷으로 내보내집니다.

psql=> SELECT * FROM aws_s3.query_export_to_s3('SELECT * FROM sample_table', :'s3_uri_1'); psql=> SELECT * FROM aws_s3.query_export_to_s3('SELECT * FROM sample_table', :'s3_uri_1', options :='format text');

파라미터는 다음과 같이 설명됩니다.

  • 'SELECT * FROM sample_table' – 첫 번째 파라미터는 SQL 쿼리를 포함하는 필수 텍스트 문자열입니다. PostgreSQL 엔진은 이 쿼리를 실행합니다. 쿼리 결과는 다른 파라미터에서 식별된 S3 버킷에 복사됩니다.

  • :'s3_uri_1' – 이 파라미터는 Amazon S3 파일을 식별하는 구조입니다. 이 예제에서는 변수를 사용하여 이전에 생성된 구조를 식별합니다. 대신 다음과 같이 aws_commons.create_s3_uri 함수 호출 내에 aws_s3.query_export_to_s3 함수 호출을 인라인을 포함시켜 구조를 생성할 수 있습니다.

    SELECT * from aws_s3.query_export_to_s3('select * from sample_table', aws_commons.create_s3_uri('amzn-s3-demo-bucket', 'sample-filepath', 'us-west-2') );
  • options :='format text'options 파라미터는 PostgreSQL COPY 인수를 포함하는 선택적 텍스트 문자열입니다. 복사 프로세스에서는 PostgreSQL COPY 명령의 인수 및 형식을 사용합니다.

지정된 파일이 Amazon S3 버킷에 없으면 생성됩니다. 파일이 이미 있는 경우 파일을 덮어씁니다. Amazon S3에서 내보낸 데이터에 액세스하는 구문은 다음과 같습니다.

s3-region://bucket-name[/path-prefix]/file-prefix

내보내는 데이터가 클 경우 각각 최대 크기가 약 6GB인 여러 파일에 저장됩니다. 추가 파일 이름의 파일 접두사도 동일하지만 _partXX가 추가됩니다. XX는 2, 3 등을 나타냅니다. 예를 들어 데이터 파일을 저장하는 경로를 다음과 같이 지정한다고 가정합니다.

s3-us-west-2://amzn-s3-demo-bucket/my-prefix

내보내기 시 세 개의 데이터 파일을 만들어야 하는 경우 Amazon S3 버킷에 다음 데이터 파일이 포함됩니다.

s3-us-west-2://amzn-s3-demo-bucket/my-prefix s3-us-west-2://amzn-s3-demo-bucket/my-prefix_part2 s3-us-west-2://amzn-s3-demo-bucket/my-prefix_part3

이 함수에 대한 전체 참조 및 이 함수를 호출하는 추가 방법은 aws_s3.query_export_to_s3 단원을 참조하세요. Amazon S3에서 파일에 액세스하는 방법에 대한 자세한 내용은 Amazon Simple Storage Service 사용 설명서객체 보기를 참조하세요.

사용자 지정 구분 기호를 사용하는 CSV 파일로 내보내기

다음 예제에서는 aws_s3.query_export_to_s3 함수를 호출하여 사용자 지정 구분 기호를 사용하는 파일로 데이터를 내보내는 방법을 보여줍니다. 이 예제에서는 PostgreSQL COPY 명령의 인수를 사용하여 쉼표로 구분된 값(CSV) 형식과 콜론(:) 구분 기호를 지정합니다.

SELECT * from aws_s3.query_export_to_s3('select * from basic_test', :'s3_uri_1', options :='format csv, delimiter $$:$$');

인코딩을 사용하여 이진 파일로 내보내기

다음 예제에서는 aws_s3.query_export_to_s3 함수를 호출하여 Windows-1253 인코딩이 있는 이진 파일로 데이터를 내보내는 방법을 보여줍니다.

SELECT * from aws_s3.query_export_to_s3('select * from basic_test', :'s3_uri_1', options :='format binary, encoding WIN1253');