aws_s3.query_export_to_s3 함수를 사용하여 쿼리 데이터 내보내기
aws_s3.query_export_to_s3 함수를 호출하여 PostgreSQL 데이터를 Amazon S3으로 내보냅니다.
사전 조건
aws_s3.query_export_to_s3
함수를 사용하기 전에 다음 사전 조건을 충족해야 합니다.
-
Amazon S3으로 데이터 내보내기 개요에 설명된 대로 필요한 PostgreSQL 확장을 설치합니다.
-
내보낼 Amazon S3 파일 경로 지정에 설명된 대로 데이터를 내보낼 Amazon S3 위치를 결정합니다.
-
Amazon S3 버킷에 대한 액세스 권한 설정에 설명된 대로 Amazon S3에 대한 내보내기 액세스 권한이 DB 인스턴스에 있는지 확인합니다.
다음 예제에서는 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
파라미터는 PostgreSQLCOPY
인수를 포함하는 선택적 텍스트 문자열입니다. 복사 프로세스에서는 PostgreSQL COPY명령의 인수 및 형식을 사용합니다.
지정된 파일이 Amazon S3 버킷에 없으면 생성됩니다. 파일이 이미 있는 경우 파일을 덮어씁니다. Amazon S3에서 내보낸 데이터에 액세스하는 구문은 다음과 같습니다.
s3-
region
://bucket-name
[/path-prefix
]/file-prefix
내보내는 데이터가 클 경우 각각 최대 크기가 약 6GB인 여러 파일에 저장됩니다. 추가 파일 이름의 파일 접두사도 동일하지만 _part
가 추가됩니다. XX
는 2, 3 등을 나타냅니다. 예를 들어 데이터 파일을 저장하는 경로를 다음과 같이 지정한다고 가정합니다.XX
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
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');