Asignación automática de nombre de objeto
El nombre de la tabla de destino se toma de la cláusula TARGET de la sentencia MAP y los nombres de columna de destino se toman de los nombres de columna de origen en los metadatos de pista.
La funcionalidad de evolución automática del esquema solo soporta actualmente la asignación de nombres de objetos cuando la base de datos de destino CHARSET es la misma que la base de datos de origen CHARSET o si es el superjuego de la base de datos de origen CHARSET. En otros casos, se muestra un mensaje de error adecuado.
En los casos en que la longitud del nombre de la tabla o la columna del origen es demasiado larga (y esta longitud no está soportada en la base de datos de destino), o en los casos en que el nombre de la tabla o la columna contiene caracteres no soportados (que no están soportados en la base de datos de destino), Replicat finaliza de forma anormal con un mensaje de error adecuado.
Para continuar, se debe realizar una de las siguientes acciones correctivas:
-
Para los nombres de tabla de destino problemáticos, debe especificar explícitamente el nombre de tabla de destino adecuado en la especificación
MAPque cumpla los requisitos de la base de datos de destino. -
Para los nombres de columna problemáticos, debe especificar explícitamente los nombres de columna de destino adecuados en la cláusula
COLMAPde la sentenciaMAPque cumpla los requisitos de la base de datos de destino. Esto se puede soportar con algunas restricciones en el origen, como no agregar columnas nuevas con los mismos nombres que se especifican en la cláusulaCOLMAPpara la columna de destino.
La distinción entre mayúsculas y minúsculas de los nombres de tabla o columna generados para la evolución automática del esquema depende de las reglas de distinción entre mayúsculas y minúsculas de las bases de datos de origen y destino y se rige por las siguientes reglas.
-
En un escenario de replicación de base de datos de origen sensible a mayúsculas/minúsculas en una base de datos de destino sensible a mayúsculas/minúsculas, todos los nombres se entrecomillan y se utilizan.
-
Para cualquier otra combinación de source a target, incluidas case-sensitive a case-insensitive, case-insensitive a case insensitive y case-insensitive a case-sensitive, se siguen las siguientes reglas:
-
Los nombres de tabla se utilizan exactamente como se especifica en la cláusula
TARGETde la sentenciaMAPen el archivo de parámetros Replicat. -
Los nombres de columna se utilizan desde el archivo de pista, sin comillas, a menos que estén entre comillas explícitamente en la cláusula
COLMAPde la sentenciaMAPen el archivo de parámetros Replicat.
-
Si los nombres de columna contienen cualquiera de los siguientes caracteres especiales o espacios, los nombres se entrecomillarán y utilizarán.
'".,{}()[]|+-_%~^#@/!><*&$:=?;\
A continuación se muestra la convención de nomenclatura de objetos utilizada por la evolución automática del esquema para los siguientes casos de uso:
-
Caso de uso: base de datos de origen sensible a mayúsculas/minúsculas
Opciones Comportamiento Si está replicando en una base de datos de destino sensible a mayúsculas/minúsculas, tenga en cuenta el caso de uso con:
El nombre de la tabla de origen es
hr.employeeColumn idtipoint(clave primaria)Tipo de nombre
varchar
Si el nombre de la tabla de destino en la cláusula
TARGETde la sentenciaMAPcontiene un comodín, se utilizan el mismo nombre y las mismas mayúsculas y minúsculas que el nombre de origen para la tabla de destino con comillas agregadas.Ejemplo:
La sentencia
MAPdel archivo de parámetros Replicat es la siguiente:MAP hr.*, TARGET region.*;La funcionalidad de evolución automática de esquemas genera el DDL en la base de datos de destino sensible a mayúsculas/minúsculas como:
CREATE TABLE "region"."employee" ( "id" int not null, "name" VARCHAR(20), primary key ("id"));Nota:
El nombre de objetoemployeeestá entre comillas enCREATE TABLE DDLporque la base de datos de origen y de destino son sensibles a mayúsculas/minúsculas.Si está replicando en una base de datos de destino sensible a mayúsculas/minúsculas, tenga en cuenta el caso de uso con:
El nombre de la tabla de origen es
hr.employeeColumn idtipoint(clave primaria)Tipo de nombre
varchar
Si el nombre de la tabla de destino de la cláusula
TARGETde la sentenciaMAPcontiene un nombre explícito, se utiliza el mismo nombre y el mismo caso que el nombre de origen para la tabla de destino con comillas agregadas a ella.Ejemplo:
La sentencia
MAPdel archivo de parámetros Replicat es la siguiente:MAP hr.employee, TARGET region.employee, COLMAP(USEDEFAULTS, "EMPNAME" = name);La funcionalidad de evolución automática de esquemas genera el DDL en la base de datos de destino sensible a mayúsculas/minúsculas de la siguiente forma:
CREATE TABLE "region"."employee" ( "id" int not null, "EMPNAME" VARCHAR(20), primary key ("id"));Nota:
El nombre de objetoemployeeno está entre comillas enCREATE TABLE DDL, ya que el nombre de objeto de la cláusulaTARGETde la sentenciaMAPno está entre comillas.Si está replicando en una base de datos de destino no sensible a mayúsculas/minúsculas, considere el uso de mayúsculas/minúsculas con:
El nombre de la tabla de origen es
hr.employeeColumn idtipoint(clave primaria)Tipo de nombre
varchar
Si el nombre de la tabla de destino de la cláusula
Ejemplo:TARGETde la sentenciaMAPcontiene un comodín, se utiliza el mismo nombre y el mismo caso que el nombre de origen para la tabla de destino.La sentencia map en el archivo de parámetros Replicat es la siguiente:
MAP hr.*, TARGET region.*;La funcionalidad de evolución automática de esquemas genera el DDL en la base de datos de destino no sensible a mayúsculas/minúsculas de la siguiente forma:
CREATE TABLE region.employee (id int not null, name VARCHAR(20), primary key (id));Nota:
El nombre de objetoemployeeno está entre comillas enCREATE TABLE DDLporque la cláusula de destino tiene un nombre comodín sin comillas.Si está replicando en una base de datos de destino no sensible a mayúsculas/minúsculas, considere el uso de mayúsculas/minúsculas con:
El nombre de la tabla de origen es
hr.employeeColumn idtipoint(clave primaria)Tipo de nombre
varchar
Si el nombre de la tabla de destino de la cláusula
Ejemplo:TARGETde la sentenciaMAPcontiene un nombre explícito, se utiliza el mismo nombre y el mismo caso que el nombre de origen para la tabla de destino.La sentencia
MAPdel archivo de parámetros Replicat es la siguiente:MAP hr.employee, TARGET region."employee", COLMAP(USEDEFAULTS, "EMPNAME" = name);La funcionalidad de evolución automática de esquemas genera el DDL en la base de datos de destino no sensible a mayúsculas/minúsculas de la siguiente manera:
CREATE TABLE region."employee" ( id int not null, "EMPNAME" VARCHAR(20), primary key (id));Nota:
El nombre de objetoemployeeestá entre comillas enCREATE TABLE DDL, ya que el nombre de objeto en la cláusulaTARGETde la sentenciaMAPestá entre comillas.EMPNAMEse cita en DDL, porque se especifica según lo indicado en la cláusulaCOLMAP -
Caso de uso: base de datos de origen no sensible a mayúsculas/minúsculas
Opciones Comportamiento Si está replicando en una base de datos de destino sensible a mayúsculas/minúsculas, considere el uso de mayúsculas/minúsculas con:
El nombre de la tabla de origen es
hr.employeeColumn idtipoint(clave primaria)Tipo de nombre
varchar
Si el nombre de la tabla de destino de la cláusula
Ejemplo:TARGETde la sentenciaMAPcontiene un comodín, se utiliza el mismo nombre y el mismo caso que el nombre de origen para la tabla de destino.La sentencia
MAPen el archivo de parámetros Replicat es la siguiente:MAP hr.*, TARGET region.*;La funcionalidad de evolución automática de esquemas genera el DDL en la base de datos de destino sensible a mayúsculas/minúsculas de la siguiente forma:
CREATE TABLE region.employee ( id int not null, name VARCHAR(20), primary key (id));Nota:
El nombre de objetoemployeeno está entre comillas enCREATE TABLE DDLporque la cláusula de destino tiene un nombre comodín sin comillas.Si está replicando en una base de datos de destino sensible a mayúsculas/minúsculas, considere el uso de mayúsculas/minúsculas con:
El nombre de la tabla de origen es
hr.employeeColumn idtipoint(clave primaria)Tipo de nombre
varchar
Si el nombre de la tabla de destino de la cláusula
Ejemplo:TARGETde la sentenciaMAPcontiene un nombre explícito, se utiliza el mismo nombre y el mismo caso que el nombre de origen para la tabla de destino.La sentencia
MAPdel archivo de parámetros Replicat es la siguiente:MAP hr.employee, TARGET region.employee, COLMAP(USEDEFAULTS, "EMPNAME" = name);La funcionalidad de evolución automática de esquemas genera el DDL en la base de datos de destino sensible a mayúsculas/minúsculas de la siguiente forma:
CREATE TABLE region.employee ( id int not null, "EMPNAME" VARCHAR(20), primary key (id));Nota:
El nombre de objetoemployeeno está entre comillas enCREATE TABLE DDL, ya que el nombre de objeto de la cláusulaTARGETde la sentenciaMAPno está entre comillas.Si está replicando en una base de datos de destino no sensible a mayúsculas/minúsculas, considere el uso de mayúsculas/minúsculas con:
El nombre de la tabla de origen es
hr.employeeColumn idtipoint(clave primaria)Tipo de nombre
varchar
Si el nombre de la tabla de destino de la cláusula
Ejemplo:TARGETde la sentenciaMAPcontiene un comodín, se utiliza el mismo nombre y el mismo caso que el nombre de origen para la tabla de destino.La sentencia
MAPdel archivo de parámetros Replicat es la siguiente:MAP hr.*, TARGET region.*;La funcionalidad de evolución automática de esquemas genera el DDL en la base de datos de destino no sensible a mayúsculas/minúsculas de la siguiente manera:
CREATE TABLE region.employee ( id int not null, name VARCHAR(20), primary key (id));Nota:
El nombre de objetoemployeeno está entre comillas enCREATE TABLE DDLporque la cláusula de destino tiene un nombre comodín sin comillas.Si está replicando en una base de datos de destino no sensible a mayúsculas/minúsculas, considere el uso de mayúsculas/minúsculas con:
El nombre de la tabla de origen es
hr.employeeColumn idtipoint(clave primaria)Tipo de nombre
varchar
Si el nombre de la tabla de destino de la cláusula
Ejemplo:TARGETde la sentenciaMAPcontiene un nombre explícito, se utiliza el mismo nombre y el mismo caso que el nombre de origen para la tabla de destino.La sentencia
MAPdel archivo de parámetros Replicat es la siguiente:MAP hr.employee, TARGET region.employee, COLMAP(USEDEFAULTS, EMPNAME = name);La funcionalidad de evolución automática de esquemas genera el DDL en la base de datos de destino no sensible a mayúsculas/minúsculas de la siguiente manera:
CREATE TABLE region.employee ( id int not null, EMPNAME VARCHAR(20), primary key (id));Nota:
El nombre de objetoemployeeno está entre comillas enCREATE TABLE DDL, ya que el nombre de objeto de la cláusulaTARGETde la sentenciaMAPno está entre comillas.