2

S3 に保存されている csv ファイルからデータをインポートするためにデータ パイプラインを使用している状況があります。初期データ読み込みでは、データ パイプラインが正常に実行されています。

次に、このデータベースを最新の状態に保ち、社内 DB と同期する必要があります。つまり、既存のレコード、新しいレコード、または削除の更新である S3 に来る CSV ファイルのセットがあることを意味します。データ パイプラインを介して RDS で更新する必要があります。

質問 - データ パイプラインはそのような目的のために設計されていますか、それとも 1 回限りのデータ ロードのみを目的としていますか? 増分更新に使用できる場合、どうすればよいですか。

どんな助けでも大歓迎です!

4

2 に答える 2

2

aws のドキュメントを参照してください: http://docs.aws.amazon.com/datapipeline/latest/DeveloperGuide/dp-template-incrementalcopyrdstos3.html

Mysql RDS 増分アップロード用の事前定義されたテンプレートがあります。私は個人的に、mysql、sql サーバー、および redshift から増分アップロードを試みました。mysql テンプレートの使用から開始し、それをアーキテクト ビューで編集して、それが使用する新しい/追加のフィールドの洞察を得て、同様に他の RDS データベースのデータパイプラインを作成することもできます。

内部的には、インクリメンタルでは、基本的に日付列である必要がある変更列を提供する必要があります。この変更列は、次のような SQL スクリプトで使用されます。

select * from #{table} where #{myRDSTableLastModifiedCol} >= '#{format(@scheduledStartTime, 'YYYY-MM-dd HH-mm-ss')}' and #{myRDSTableLastModifiedCol} <= '#{format(@ scheduleEndTime, 'YYYY-MM-dd HH-mm-ss')}'

scheduleStartTime と scheduleEndTime は、値がスケジュールに依存する datapipeline 式です。 http://docs.aws.amazon.com/datapipeline/latest/DeveloperGuide/dp-pipeline-expressions.html

また、scheduletype は timeseries であり、データの損失がないことを保証するために、スケジュールの終了時刻の最後に SQL を実行します。

はい、削除されたデータは datapipeline を介して追跡できません。また、テーブルにdatetime列が存在しない場合、datapiplelineも役に立ちません。その場合、テーブル全体をロードすることをお勧めします。

私はかなりカバーしたことを願っています-私は知っています:)

よろしく、 ヴァルンR

于 2016-06-17T10:19:16.953 に答える