2017-03-21 14 views
0

mysqlからredshiftまでのデータをロードしたいと思います。mysqlからRedshiftへのデータ複製

ここで私のデータ値はいつでも変更できます。だから私はRedshiftに古いレコードと新しいレコードを取り込む必要があります。

ここで、変更されたレコードはアーカイブする必要があります。新しいレコードはRedshiftに反映されます。例えば

はMysqlTable:赤方偏移に最初の負荷に対する

ID NAME SAL 
-- ---- ----- 
1  XYZ  10000 
2  ABC  20000 

(これはMysqltableと同じでなければならない)第二の負荷用

ID  NAME  SAL 
--  ----  ---- 
1  XYZ  10000 
2  ABC  20000 

(I 'は、従業員の給与を変更しましたXYZ '= 10000〜30000)

ID  NAME  SAL 
--  ----  ---- 
1  XYZ  30000 
2  ABC  20000 

上記の表はRedshiftに反映され、変更されたレコード(1 XYZ 10000)はアーカイブする必要があります。

これは可能ですか?

答えて

0

期待している行の数はいくつですか?

1つの方法は、レコードが変更されるたびに現在の時刻に更新されるタイムスタンプ列を追加することです。

その後レプリケーションの実行を行う外部プロセスで、あなたは赤方偏移から最大のタイムスタンプを取得し、あなたが赤方偏移にロードするCOPYメソッドを使用している場合、そのタイムスタンプよりも大きいとMySQLからすべてのレコードを選択し、それらをダンプすることができS3。

新しいレコードを読み込んで古いレコードを保存するには、Redshift upsert patternのバリエーションを使用する必要があります。これには、一時テーブルへのロード、元のテーブル内のレコードを識別して別のアーカイブテーブルに移動するか、UNLOADingをS3アーカイブに移動してからALTER APPENDという新しいレコードをメインテーブルに格納します。

関連する問題