更换头巾
有效对象
提取和复制
说明
在映射字符类型列时,使用 REPLACEBADCHAR 参数控制源字符集或目标字符集不存在有效代码点时的进程响应。默认情况下,仅当源数据库和目标数据库具有不同的字符集并且默认响应为异常终止时,才会执行对无效代码点的检查。可以使用 FORCECHECK 选项强制进程在源和目标数据库具有相同字符集时检查无效代码点。REPLACEBADCHAR 适用于全球。
默认值
ABORT
语法
REPLACEBADCHAR {ABORT | SKIP | ESCAPE | SUBSTITUTE <string> | NULL | SPACE} [FORCECHECK] [NOWARNING]
ABORT
进程在遇到无效的代码点时异常终止。这是默认设置。
SKIP
该处理将跳过记录中的错误字符。
ESCAPE
该过程使用数据值的转义版本替换数据值。根据源数据库的字符集,该值将输出为以下值之一:
-
如果源数据不是
UTF-16(NCHAR/NVARCHAR),则输出为十六进制 (\xXX))。 -
如果源数据是
UTF-16,则输出为 Unicode (\uXXXX).)
SUBSTITUTE <string>
该过程使用指定的字符串(Unicode 表示法或最多四个字符)替换数据。默认情况下,目标字符集的默认替代字符用于替换。
NULL
进程在目标列可为空值时使用 NULL 值来替换无效字符,否则分配空格 (U+0020)。
SPACE
进程将使用空格 (U+0020) 替换无效字符。
FORCECHECK
当源和目标数据库具有相同字符集时,进程会检查无效代码点。这会覆盖默认值(当源和目标字符集相同时跳过验证)。
NOWARNING
进程将隐藏与转换和验证错误相关的警告消息。
示例
示例 1
以下示例将无效代码点替换为值 NULL。
REPLACEBADCHAR NULL
示例 2
由于指定了 ESCAPE,因此 Oracle GoldenGate 将源 NCHAR 列中的欧元符号替换为转义的 u20AC 版本,因为目标是不支持欧元代码点的 ISO-8859-1。
REPLACEBADCHAR ESCAPE
示例 3
以下语句将控制字符替换为无效字符。
REPLACEBADCHAR SUBSTITUTE \u001A