2

S3에 저장된 CSV 파일에서 데이터를 가져 오기 위해 데이터 파이프 라인을 사용하고 있습니다. 초기 데이터로드의 경우 데이터 파이프 라인이 올바르게 실행됩니다.AWS 데이터 파이프 라인 - 증분 RDS 데이터 업데이트에이를 어떻게 사용합니까?

이제이 데이터베이스를 최신 상태로 유지하고 내부 DB에 동기화해야합니다. 어떤 기존 레코드, 새 레코드 또는 삭제에 대한 업데이트가 될 S3에 오는 CSV 파일 집합이 있음을 의미합니다. 데이터 파이프 라인을 통해 RDS에서 업데이트해야합니다.

질문 - 데이터 파이프 라인을 이러한 목적으로 설계 할 수 있습니까? 아니면 일회용 데이터로드에만 사용할 수 있습니까? 점진적 업데이트에 사용할 수 있다면 어떻게해야합니까?

도움을 주시면 감사하겠습니다.

답변

2

예, 당신이 업데이 트를하고 (일명 upsert) 삽입해야 내가 :)

감사합니다, 하기 Varun R을 알고 꽤-많이 덮여있다 바랍니다. key_a, Key_B와 다른 열 : 당신이 키가있는 테이블이있는 경우

는 col_c를, 다음과 같은 SQL을 사용할 수 있습니다 col_d :

insert into TABLENAME (key_a, key_b, col_c, col_d) values (?,?,?,?) ON DUPLICATE KEY UPDATE col_c=values(col_c), col_d=values(col_d)

+0

감사합니다. Matt! 이것은 분명히 문제의 절반을 해결했습니다. 당신의 도움을 주셔서 감사합니다.이제 데이터 파이프 라인을 사용하여 삭제/사용자 지정 SQL 문을 실행할 수 있는지 여부를 알아 내려고합니다. 이에 대한 의견이 있으면 알려주십시오. – Atul

1

좋은 말 AWS 문서를 참조하십시오 : http://docs.aws.amazon.com/datapipeline/latest/DeveloperGuide/dp-template-incrementalcopyrdstos3.html

MySQL의 RDS 증가 업로드 미리 정의 된 템플릿이있다, 나는 개인적으로 MySQL은, SQL Server 및 적색 편이의 증분 업로드를 시도했다. mysql 템플릿을 사용하여 시작하고 아키텍트 뷰에서 편집하여 사용중인 새/추가 필드에 대한 통찰력을 얻고 다른 RDS 데이터베이스에 대한 데이터 파이프 라인을 생성 할 수 있습니다.

는 내부적으로 증분은 본질적으로 날짜 열 수 있어야 변경 열을 제공하도록 요구하고,이 changecolumn 같은되는 SQL 스크립트에서 그들을 사용됩니다

선택 * #에서 {테이블}= '# {format (@scheduledEndTime,'YYYY-MM-dd)} # {myRDSTableLastModifiedCol}> = '# {형식 {@scheduledStartTime,'YYYY-MM-dd HH- HH-mm-ss ')}'

scheduledStartTime 및 scheduleEndTime은 일정에 따라 값이 달라지는 데이터 파이프 라인 표현식입니다. http://docs.aws.amazon.com/datapipeline/latest/DeveloperGuide/dp-pipeline-expressions.html

이고 scheduletype은 데이터 손실이 없음을 약속 일정 종료 시간의 끝에서 SQL을 실행하는 데 사용됩니다.

예 삭제 된 데이터는 데이터 파이프 라인을 통해 추적 할 수 없습니다. 또한 datapipleline도 datetime 열이 테이블에 없으면 도움이되지 않습니다.이 경우 전체 테이블을로드하는 편이 더 좋습니다.

나는

+0

하기 Varun, 점점 지연에 대한 회신 및 사과 주셔서 감사합니다 뒤로. 상자 템플릿을 사용하면 RDS에서 S3 (CSV)로 내보낼 수 있지만 전 구식 DB (csv 내보내기)에서 클라우드 RDS를 업데이트하려면 다른 방법을 원했습니다. 변경 사항을 추적하는 데 날짜 필드를 사용하는 것과 삭제 확인에 대한 제한에 대한 귀하의 의견에 동의합니다. 또한 초기 및 증분 부하를 달성하는 데 도움이되는 다른 ETL 도구를 평가하고 있습니다. – Atul