Aurora PostgreSQL Limitless Database에서 COPY 명령 사용 - Amazon Aurora

Aurora PostgreSQL Limitless Database에서 COPY 명령 사용

psql 유틸리티의 \copy 기능을 사용하여 Aurora PostgreSQL Limitless Database로 데이터를 가져오고 내보낼 수 있습니다.

COPY 명령을 사용하여 Aurora PostgreSQL Limitless Database로 데이터 로드

Aurora PostgreSQL Limitless Database는 데이터 가져오기에서 psql 유틸리티의 \copy 기능과 호환됩니다.

Aurora PostgreSQL과 같은 Limitless Database에서는 다음이 지원되지 않습니다.

  • DB 인스턴스에 대한 직접 SSH 액세스 - 데이터 파일(예: .csv 형식)을 DB 인스턴스 호스트에 복사하고 파일에서 COPY를 실행할 수 없습니다.

  • DB 인스턴스에서 로컬 파일 사용 - COPY ... FROM STDINCOPY ... TO STDOUT을 사용합니다.

PostgreSQL의 COPY 명령에는 로컬 파일(FROM/TO)로 작업하고 클라이언트와 서버(STDIN/STDOUT) 간의 연결을 사용하여 데이터를 전송하는 옵션이 있습니다. 자세한 내용은 PostgreSQL 설명서의 COPY를 참조하세요.

PostgreSQL psql 유틸리티의 \copy 명령은 psql 클라이언트를 실행하는 컴퓨터의 로컬 파일과 호환됩니다. 연결된 원격(예: Limitless Database) 서버에서 해당 COPY ... FROM STDIN 또는 COPY ... FROM STDOUT 명령을 간접 호출합니다. 로컬 파일에서 STDIN로 데이터를 읽거나 STDOUT에서 여기에 데이터를 씁니다.

데이터를 여러 파일로 분할

데이터는 Aurora PostgreSQL Limitless Database의 여러 샤드에 저장됩니다. \copy를 사용하여 데이터 로드 속도를 높이려면 데이터를 여러 파일로 분할할 수 있습니다. 그런 다음 별도의 \copy 명령을 병렬로 실행하여 각 데이터 파일에 대해 독립적으로 가져옵니다.

예를 들어 가져올 행이 300만 개인 CSV 형식의 입력 데이터 파일이 있습니다. 파일을 각각 20만 개의 행을 포함하는 청크(15개의 청크)로 분할할 수 있습니다.

split -l200000 data.csv data_ --additional-suffix=.csv -d

그러면 data_00.csv부터 data_14.csv까지의 파일이 생성됩니다. 그런 다음, 다음과 같은 15개의 병렬 \copy 명령을 사용하여 데이터를 가져올 수 있습니다.

psql -h dbcluster.limitless-111122223333.aws-region.rds.amazonaws.com -U username -c "\copy test_table from '/tmp/data_00.csv';" postgres_limitless & psql -h dbcluster.limitless-111122223333.aws-region.rds.amazonaws.com -U username -c "\copy test_table FROM '/tmp/data_01.csv';" postgres_limitless & ... psql -h dbcluster.limitless-111122223333.aws-region.rds.amazonaws.com -U username -c "\copy test_table FROM '/tmp/data_13.csv';" postgres_limitless & psql -h dbcluster.limitless-111122223333.aws-region.rds.amazonaws.com -U username -c "\copy test_table FROM '/tmp/data_14.csv';" postgres_limitless

이 기법을 사용하면 단일 \copy 명령을 사용하는 것보다 약 10배 더 빠르게 동일한 양의 데이터를 가져옵니다.

COPY 명령을 사용하여 Limitless Database 데이터를 파일로 복사

다음 예시와 같이 \copy 명령을 사용하여 무한 테이블의 데이터를 파일로 복사할 수 있습니다.

postgres_limitless=> \copy test_table TO '/tmp/test_table.csv' DELIMITER ',' CSV HEADER;