CData Sync: CDC連携時における削除レコードの物理削除の方法

by 宇佐美格 | July 16, 2025 | Last Updated: July 16, 2025

cover

CData Sync ではPostgreSQL, MySQL, Oracle, SQL Server などのDB をデータソースとするデータ連携のケースでは、CDC ジョブにすることでデータソース側で削除されたデータのキャプチャが可能となります。ただし削除されたデータの連携は_cdatasync_deleted というカラムにTRUE (1) もしくはFALSE (0) の値が連携され、物理削除ではなく論理削除となります。同期先も物理削除する場合は、CData Sync の変換機能で対応することができます。本記事では変換機能を用いてデータソースで削除されたレコードを同期先も物理削除するための方法について解説します。

CDCジョブの詳細については Change Data Capture(CDC)とは?CDC の基本から仕組み、各種手法を完全解説 をご参照ください。

検証環境 / シナリオ

本記事で検証しているCData Sync のバージョンは25.2.9306.0 となります。シナリオとしては、PostgreSQL からSnowflake への連携で、初回連携後にPostgreSQLの連携テーブルからレコードを削除し、2回目の連携時にSnowflake からも該当のレコードを物理削除する流れとなります。今回のシナリオではデータソースにPostgreSQL を使用していますが、CDC ジョブが利用できる他のデータソースでも同様の手順で物理削除の連携が可能です。

データの事前準備

予めPostgreSQL とSnowflake の接続を作成しPostgreSQL からSnowflake へ連携するジョブを作成しておきます。PostgreSQL に次のようなSQL を実行し連携するテーブルを作成しておきます。

CREATE TABLE example_user (
    id SERIAL PRIMARY KEY,
    username VARCHAR(50) NOT NULL,
    email VARCHAR(100) NOT NULL UNIQUE,
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);

INSERT INTO example_user (username, email) VALUES
('user1', 'user1@example.com'),
('user2', 'user2@example.com'),
('user3', 'user3@example.com');

設定方法

変換タブから[変換を追加] -> [新しい変換を追加]をクリックします。

新しい変換を追加

フォームに次のように入力します。

- 名前: 任意の変換名

- 種類: SQL

- 同期先: [連携先の接続]

変換を追加

画面右のトリガーセクション内の設定をクリックし、次のようにトリガーを設定します。

- 種類: ジョブ後

- ジョブ: [レコードを物理削除するテーブルが含まれるCDC ジョブ]

トリガーを編集

次にクエリタブ -> [クエリを追加]をクリックし次のようなクエリを追加します。

DELETE FROM {同期先テーブル名} WHERE "_cdatasync_deleted" = true

※上記クエリは本検証で動作確認したものです。ジョブ・接続の設定値、接続先に応じて、ダブルクォーテーションが不要になるなどの修正が必要になる場合がございます。変換先DBで有効なSQLを設定ください。

変換クエリ

これで設定は完了しました。

検証

初回のジョブを実行後、PostgreSQL で次のようなクエリを実行しレコードを削除します。

DELETE FROM example_user WHERE username = 'user3';

再度CDCのジョブを実行した後に、作成した変換が実行され、ステータスがSuccessfulになっていることを確認します。

変換履歴

Snowflake上で連携先のテーブルを参照するとレコードが削除されていることを確認できます。

Snowflake結果

まとめ

本記事では、CData Sync のCDC 連携における削除レコードの物理削除の方法について説明しました。CData Sync でその他お困りのことがありましたら弊社テクニカルサポートまでお問い合わせください。