> ## Documentation Index
> Fetch the complete documentation index at: https://docs.sync.cdata.com/llms.txt
> Use this file to discover all available pages before exploring further.

# カスタムクエリ: REPLICATE コマンド

export const siteNameShort = "Sync";

export const siteName = "CData Sync";

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

<Note>{siteNameShort} アプリケーションは、標準SQL クエリをソースAPI 呼び出しに動的に変換する完全なSQL-92 準拠エンジンを搭載しています。</Note>

**REPLICATE 構文：**

```sql theme={null}
REPLICATE { 
  DestinationTableName
  (ColumnDefinition [ , ... ] [TableConstraint])
  [WITH {OptionName=OptionValue|OptionName} , ... ]
  { SelectStatement | TableReference> } 
}

ColumnDefinition := ColumnName DataType
TableConstraint := PRIMARY KEY(ColumnName,...)
OptionName := DropTable | TruncateTable | AlterSchema ...
OptionValue := Literal | Identifier
```

<Note>REPLICATE コマンドは、WITH 句を通じてレプリケーション中のデータ処理方法を制御する追加オプションをサポートします。一部のオプションは、変換ではなく実行動作に影響します。例えば、大規模なデータセットのスナップショットパフォーマンスを向上させるために、並列パーティション読み取りを有効にすることができます。詳細については、[並列パーティション読み取りによるスナップショットパフォーマンス](../../getting-started/configuring-jobs#snapshot-performance-with-parallel-partitioned-reads)を参照してください。</Note>

## 一般的なREPLICATE タスク

このセクションでは、一般的なREPLICATE タスクのいくつかの例を紹介します。

### 同期先にテーブルのコピーを維持する

同期先にテーブルのコピーを維持したい場合は、次のREPLICATE コマンドを使用できます：

```sql theme={null}
REPLICATE Table
```

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

### 別のテーブルからテーブルをレプリケートする

次のコマンドを使用すると、別のテーブルからテーブルをレプリケートできます（この例では、Table からREP\_Table をレプリケートします）。

```sql theme={null}
REPLICATE REP_Table SELECT * FROM Table
```

### レプリケーション前にカラムを選択してデータの操作を実行する

レプリケーションを実行する前に特定のカラムを選択してデータの操作を実行するには、次のREPLICATE コマンドを使用できます：

```sql theme={null}
REPLICATE REP_Table SELECT DateModified, CONCAT(FirstName,' ',LastName) AS FullName FROM Table WHERE FirstName LIKE '%Tim%'
```

このコマンドは、DateModified カラムとFullName カラムを使用してテーブルREP\_Table を作成します。FullName カラムは、Table テーブルのFirstName とLastName を連結したカラムです。

### 主キーのある場合とない場合のテーブルのレプリケーション

REPLICATE ステートメントでカラムを再定義することで、{siteNameShort} が同期先にテーブルを作成する方法をカスタマイズできます。このアプローチにより、同期先にテーブルが作成される際に主キーを含めるか省略するかを制御できます。

ソースに主キーが存在する場合でも、主キーのない同期先テーブルを作成するには、以下の構文に示すようにカラム定義にPRIMARY KEY キーワードなしでカラムを明示的に定義します：

```sql theme={null}
REPLICATE [Table] (KeyColumnName int)
```

例えば、Id カラムを主キーなしでAirlines テーブルを作成するには、次のコマンドを実行します：

```sql theme={null}
REPLICATE Airlines (Id int)
```

ソースに主キーが**存在しない**場合でも、同期先に主キーを定義するには、同じ構文を使用してカラム定義にPRIMARY KEY キーワードを含めます：

```sql theme={null}
REPLICATE Airlines (Id int PRIMARY KEY)
```
