CData Sync の切り捨てエラー

このエントリでは、切り捨てエラーの原因と、問題を解決するためのさまざまな方法について説明します。

Date Entered: 2/13/2020    Last Updated: 2/28/2020

切り捨てエラーは、ソース接続のカラムサイズが同期先のカラムサイズを超えた場合によく発生する問題です。 エラーメッセージは同期先によって若干異なります。以下に、表示される可能性のある実際のエラーメッセージを示します。

SQL Server: "String or binary data would be truncated"
PostgreSQL: "value too long for type <type>"
Snowflake: "<value> is too long and would be truncated"
DB2: "The value of a host variable in the EXECUTE or OPEN statement is out of range for its corresponding use."
Access: "Data type mismatch in criteria expression"
MySQL: "data too long for column <column> at row <row>"

上記のエラーに加えて、CData Sync のログファイルに以下のような警告が表示されます。
Warning: The size of data for the column 'columnname' with size '2000' is too large and may be truncated to '255.'

以下では、これらのエラーを解決するためのオプションについて説明します。

LongTextSize

ジョブの詳細設定で、Additional Options に以下を追加します。

LongTextSize=2000;

これにより、サイズが2000以上のすべてのカラムが NVARCHAR(MAX) 型に変換されます。

DefaultColumnSize

ソース接続の詳細な接続設定で、Other (Optional) に以下を追加します。

DefaultColumnSize=4000;

これにより、すべての文字列カラムのデフォルトの長さが指定したサイズに変更されます。

文字列の自動切り捨て(Auto-Truncate Strings)

ジョブの詳細設定で、Auto-Truncate Strings チェックボックスを有効にします。

これにより、同期先に対して大きすぎる値が自動的に切り捨てられます。

REPLICATE ステートメントでカラムサイズを指定する

REPLICATE クエリをカスタマイズして、カラムの型とサイズを指定できます。例えば:

REPLICATE Account (name nvarchar(2000))

このように記述すると、name カラムの型が nvarchar(2000) に変更されます。

BytesPerCharacter

ソースデータにマルチバイト文字が含まれている場合は、BytesPerCharacter プロパティの設定が必要になることがあります。この設定は、Redshift、DB2、Oracle への同期にのみ影響します。

Additional Options >> Advanced >> Job Settings で、以下を追加してプロパティを設定できます。

BytesPerCharacter=2;

これにより、マルチバイト文字に対応するために同期先のカラムサイズが乗算されます。


We appreciate your feedback.  If you have any questions, comments, or suggestions about this entry, please contact our support team at support@cdata.co.jp.