DDLSUBST
有效对象
提取和复制
说明
使用 DDLSUBST 参数替换 DDL 操作中的字符串。例如,可以用一个表名替代另一个表名,也可以用注释中的字符串替代。此搜索不区分大小写。要在字符串中表示引号,请使用双引号。
使用 DDLSUBST 的准则
-
请勿使用
DDLSUBST将列名和数据类型转换为目标上的其他内容。以这种方式更改目标对象的结构将在将数据复制到目标对象时导致错误。同样,不要使用DDLSUBST更改目标DDL语句中的所有者和表名。始终使用MAP语句将复制的DDL操作映射到其他目标对象。 -
DDLSUBST始终在DDL参数之后执行,而不管其在参数文件中的相对顺序如何。由于首先执行筛选,因此请使用与要用于字符串替换的标准兼容的筛选标准。例如,考虑以下参数语句:
DDL INCLUDE OBJNAME fin.*
DDLSUBST 'cust' WITH 'customers' INCLUDE OBJNAME sales.*
在本示例中,不会进行任何替换,因为 INCLUDE 和 DDLSUBST 语句中的对象不同。fin 拥有的对象包含在 Oracle GoldenGate DDL 配置中,但 sales 拥有的对象不包括在配置中。
-
可以使用多个
DDLSUBST参数。它们按参数文件中列出的顺序执行。 -
对于包含注释的 Oracle
DDL,如果要对这些注释执行字符串替换,请不要将DDLOPTIONS参数与REMOVECOMMENTS BEFORE选项一起使用。REMOVECOMMENTS BEFORE将在字符串替换之前删除注释。要删除注释,但允许字符串替换,请使用REMOVECOMMENTS AFTER选项。 -
除了数据库施加的限制之外,替代没有最大字符串大小。如果字符串大小超过数据库限制,则执行该操作的提取或复制进程将异常终止。
默认值
无替代
语法
DDLSUBST '<search_string>' WITH '<replace_string>'
[INCLUDE <inclusion_clause> | EXCLUDE <exclusion_clause>]
<'search_string'>
要替换的源 DDL 语句中的字符串。将字符串括在单引号内。要在字符串中表示引号,请使用双引号。
WITH
必需的关键字。
<'replace_string'>
您要在目标 DDL 中用作替换项的字符串。将字符串括在单引号内。要在字符串中表示引号,请使用双引号。
INCLUDE <inclusion_clause> | EXCLUDE <exclusion_clause>
指定一个或多个 INCLUDE 和 EXCLUDE 语句,以过滤对其应用字符串替换规则的 DDL 操作。有关语法和用法,请参见 DDL Filtering Options 。
示例
示例 1
以下语句将字符串 cust 替换为 fin 方案中表的字符串 customers。
DDLSUBST 'cust' WITH 'customers'
INCLUDE ALL OBJTYPE 'table' OBJNAME fin.*
示例 2
仅当 DDL 命令包含单词 logfile 时,以下命令才会替换新目录。如果多次找到搜索字符串,则多次插入替换字符串。
DDLSUBST '/file1/location1' WITH '/file2/location2' INCLUDE INSTR 'logfile'
示例 3
以下语句使用多个 DDLSUBST 语句,这些语句按所示的顺序执行。
DDLSUBST 'a' WITH 'b' INCLUDE ALL
DDLSUBST 'b' WITH 'c' INCLUDE ALL
上述函数的净效果将所有 a 和 b 字符串替换为 c。