TiCDC CSV プロトコル
クラウドstorageサービスをダウンストリーム シンクとして使用する場合、DML イベントを CSV 形式でクラウドstorageサービスに送信できます。
CSVを使用する
以下は、CSV プロトコルを使用する場合の構成の例です。
cdc cli changefeed create --server=http://127.0.0.1:8300 --changefeed-id="csv-test" --sink-uri="s3://bucket/prefix" --config changefeed.toml
changefeed.tomlファイルの構成は次のとおりです。
[sink]
protocol = "csv"
terminator = "\n"
[sink.csv]
delimiter = ','
quote = '"'
null = '\N'
include-commit-ts = true
binary-encoding-method = 'base64'
トランザクションの制約
- 単一の CSV ファイルでは、行の
commit-ts次の行の 1 以下になります。 - 1 つのテーブルの同じトランザクションが同じ CSV ファイルに保存されます。
- 同じトランザクションの複数のテーブルを異なる CSV ファイルに保存できます。
データstorageパス構造
データのstorageパス構造の詳細については、 ストレージパス構造を参照してください。
データ形式の定義
CSV ファイルでは、各列は次のように定義されます。
- カラム1: 操作タイプのインジケーター (
I、U、およびDを含む)。IINSERTを意味し、UUPDATEを意味し、DDELETEを意味します。 - カラム2: テーブル名。
- カラム3: スキーマ名。
- カラム4: ソース トランザクションの
commit-ts。この列はオプションです。 - カラム5 から最後の列まで: 変更されるデータを表す 1 つ以上の列。
テーブルhr.employeeが次のように定義されていると仮定します。
CREATE TABLE `employee` (
`Id` int NOT NULL,
`LastName` varchar(20) DEFAULT NULL,
`FirstName` varchar(30) DEFAULT NULL,
`HireDate` date DEFAULT NULL,
`OfficeLocation` varchar(20) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
このテーブルの DML イベントは、次のように CSV 形式で保存されます。
"I","employee","hr",433305438660591626,101,"Smith","Bob","2014-06-04","New York"
"U","employee","hr",433305438660591627,101,"Smith","Bob","2015-10-08","Los Angeles"
"D","employee","hr",433305438660591629,101,"Smith","Bob","2017-03-13","Dallas"
"I","employee","hr",433305438660591630,102,"Alex","Alice","2017-03-14","Shanghai"
"U","employee","hr",433305438660591630,102,"Alex","Alice","2018-06-15","Beijing"