2016-08-03 7 views
1

원격 유닉스 서버에있는 csv 파일이 있습니다. 나는 현재 다른 원격 서버에있는 포스트 그레스 DB (greenplum)에 데이터로드를 넣어야합니다.원격 유닉스 서버에서 다른 원격 서버로의 csv 데이터로드 postgres

현재 로컬 드라이브에 csv를 winscp로 가져 와서 로컬 복사본이있는 pgadmin을 사용하여 greenplum 원격으로로드하고 있습니다.

이것은 로컬 컴퓨터로 데이터를 가져 와서 greenplum에 넣는 순환적인 방법 인 것처럼 보입니다. 그것은 시간이 오래 걸리고있다 (> 100 시간)

로컬 개입없이 원격 greenplum db에 원격 csv를 대량로드하는 방법이 있어야한다고 생각한다. 이런 종류의 데이터 이전 경험이있는 사람이 있습니까? ETL에 talend를 사용하고 있습니다.

감사합니다.

답변

1

예, 원격 서버에서 Greenplum으로 데이터를로드하는 대량로드 방법이 있습니다. 그것은 훨씬 더 빠릅니다.

Talend 서버는 클러스터의 세그먼트 호스트와 통신 할 수 있도록 네트워크에 연결되어야합니다. 다음은 네트워크 구성 방법에 대한 가이드입니다. http://gpdb.docs.pivotal.io/4380/admin_guide/intro/about_loading.html

그런 다음 "gpload"를 사용하여 데이터를로드 할 수 있습니다. 이 유틸리티는 gpfdist 프로세스를 시작하고 외부 테이블을 생성하며 INSERT 문을 수행하는 작업을 자동화하는 유틸리티입니다. galed에 관한 문서 : http://gpdb.docs.pivotal.io/4380/utility_guide/admin_utilities/gpload.html#topic1

마지막으로, Talend는 Pivotal 파트너이며, 도구를 사용하여 Greenplum에 데이터를로드하는 방법에 대한 많은 문서를 가지고 있습니다. gpfdist를 사용하여 gpload와 마찬가지로 데이터베이스에 병렬로 데이터를로드합니다.

+0

감사합니다. Jon! 그것은 매우 도움이됩니다. 이 기능으로 기본 삽입 작업을 수행 할 수있었습니다. gpload를 사용하여 upsert (레코드가 존재하면 업데이트, 레코드가없는 경우 삽입)하면 할 수있는 포인터를 알려주시겠습니까? 병합이 내가 원하는 것을 수행합니까? 간단한 삽입으로 기본 테이블 하중이 매우 빠릅니다. 조건에 따라 Y에서 INSERT X SELECT로, 나는 땅을 밟을 방법을 확신하지 못합니다. 제공 할 수있는 지침을 이해하십시오. – wizengeeky

+0

gpload에는 병합 옵션이 있지만 중복을 처리하지 않습니다. 나는 그것 때문에 병합의 팬이 아니야. 병합을 처리하는 다른 방법은 다음과 같습니다. http://www.pivotalguru.com/?p=104 마지막으로 외부 테이블에 조건을 넣는 방법을 언급했습니다. Greenplum이 가지고있는 다양한 SQL 함수를 사용하여 컬럼을 변형 할 수있을뿐만 아니라 확실히 그렇게 할 수 있습니다. –