Replicate コマンド


Replicate コマンド


CData Sync は、特別な目的のSQL コマンド:REPLICATE を使用して、宣言的な方法ですべての変換を管理します。REPLICATE コマンドを使用すると、選択されるデータや適用される変換を定義し、同期先テーブルにデータをマップできます。

REPLICATE 構文

REPLICATE { 
  <destination_table_name>
  [ EXCLUDE COLUMNS ( <column_name> [ , ... ] ) ]
  (<column_definition> [ , ... ] [<table_constraint>])
  [WITH {<option_name>=<option_value>|<option_name>} , ... ]
  [AS] { <select_statement> | <table_reference> } 
} | TABLES ( 
    {
      <table_name> 
      [ EXCLUDE COLUMNS ( <column_name> [ , ... ] ) ]
    } [ , ... ] 
) | ALL [
    { 
      EXCLUDE COLUMNS ( { <table_name>.<column_name> } [ , ... ] )
      | EXCLUDE TABLES ( <table_name> [ , ... ] ) 
    }
]

<table_constraint> := PRIMARY KEY(<column_name>,...)
<option_name> := DropTable | TruncateTable | AlterSchema ...
<option_value> := <literal> | <identifier>

一般的なReplicate クエリ

次のステートメントを使用すると、同期先のテーブルのコピーを維持できます。Replicate コマンドは、同期先データベース内にTable を作成します(まだ存在しない場合)。該当する場合は、REPLICATE ステートメントは最近の変更(ソースで新しく更新または挿入されたレコード)を取得して、それらを同期先に適用します。

REPLICATE Table

次のステートメントを使用すると、Table をREP_Table に複製できます。

REPLICATE REP_Table SELECT * FROM Table

次のステートメントを使用すると、特定のカラムを選択して、複製される前のデータに対して操作を実行できます。このコマンドは、DateModified カラムとFullName カラムを使用してテーブルREP_Table を作成します。FullName カラムは、Table テーブルのFirstName とLastName を連結したカラムです。

REPLICATE REP_Table SELECT DateModified, CONCAT(FirstName," ",LastName) AS FullName FROM Table WHERE FirstName LIKE '%Tim%'

CHECKCACHE コマンド

CheckCache コマンドは、Replicate コマンドの実行後にデータの同期先コピーを修復するために使用できます。

CHECKCACHE 構文

CHECKCACHE <cached_table_name>  
  [ AGAINST { <tablename> | ( <select_statement> )}]
  [ WITH REPAIR ] 
  [ SKIP { MODIFIED | DELETED }]
  [ START {<datetime> | <date time function>}] 
  [ END {<datetime> | <date time function>}]

一般的なCheckCache クエリ

次のステートメントを使用すると、同期先テーブルを検証および修復します。このコマンドはソーステーブルと同期先テーブルの両方をクエリし、同期先にないレコードを挿入し、同期先の古いレコードを更新し、ソースにないレコードを削除します。

CHECKCACHE REP_Table AGAINST Table WITH REPAIR;

次のステートメントを使用すると、指定された日付範囲内のキャッシュのみを修復できます。

CHECKCACHE REP_Table AGAINST Table WITH REPAIR START '2018-01-01' END '2019-01-01'

次のステートメントを使用すると、指定された日付範囲内のキャッシュにある特定のカラムのみを修復できます。

CHECKCACHE REP_Table AGAINST (SELECT Id, Name, DateModified FROM Table) WITH REPAIR START '2018-01-01' END '2019-01-01'

次のステートメントを使用すると、前の月に削除されたレコードを削除することでキャッシュデータベースのみを修復できます。

CHECKCACHE REP_Table AGAINST Table WITH REPAIR SKIP MODIFIED START LAST_MONTH()