Mapping nome oggetto automatico
Il nome della tabella di destinazione deriva dalla clausola TARGET dell'istruzione MAP e i nomi delle colonne di destinazione provengono dai nomi delle colonne di origine nei metadati di trail.
La funzionalità Evoluzione schema automatica attualmente supporta il mapping dei nomi oggetto solo quando il database di destinazione CHARSET è uguale al database di origine CHARSET o se è il superset del database di origine CHARSET. In altri casi, viene segnalato un messaggio di errore appropriato.
Nei casi in cui la lunghezza del nome della tabella o della colonna dall'origine è troppo lunga (e questa lunghezza non è supportata nel database di destinazione) o nel caso in cui il nome della tabella o della colonna contenga caratteri non supportati (non supportati nel database di destinazione), Replicat termina con un messaggio di errore appropriato.
Per continuare, è necessario intraprendere una delle seguenti azioni correttive:
-
Per i nomi di tabella di destinazione problematici, è necessario specificare in modo esplicito il nome di tabella di destinazione appropriato nella specifica
MAPche soddisfa i requisiti del database di destinazione. -
Per i nomi di colonna problematici, è necessario specificare in modo esplicito i nomi di colonna di destinazione appropriati nella clausola
COLMAPdell'istruzioneMAPche soddisfa i requisiti del database di destinazione. Ciò può essere supportato con alcune limitazioni all'origine, ad esempio non aggiungendo nuove colonne con gli stessi nomi specificati nella clausolaCOLMAPper la colonna di destinazione.
La distinzione tra maiuscole e minuscole dei nomi di tabella o colonna generati per l'evoluzione automatica dello schema dipende dalle regole di distinzione tra maiuscole e minuscole dei database di origine e di destinazione e dipende dalle regole riportate di seguito.
-
In un database di origine con distinzione tra maiuscole e minuscole in uno scenario di replica del database di destinazione con distinzione tra maiuscole e minuscole, tutti i nomi vengono racchiusi tra virgolette e utilizzati.
-
Per qualsiasi altra combinazione tra origine e destinazione, tra cui senza distinzione tra maiuscole e minuscole e senza distinzione tra maiuscole e minuscole, da senza distinzione tra maiuscole e minuscole a senza distinzione tra maiuscole e minuscole e da senza distinzione tra maiuscole e minuscole a senza distinzione tra maiuscole e minuscole, vengono seguite le regole riportate di seguito.
-
I nomi delle tabelle vengono utilizzati esattamente come specificato nella clausola
TARGETdell'istruzioneMAPnel file dei parametri Replicat. -
I nomi di colonna vengono utilizzati dal file trail, senza virgolette, a meno che non vengano citati esplicitamente nella clausola
COLMAPdell'istruzioneMAPnel file dei parametri Replicat.
-
Se i nomi delle colonne contengono uno dei seguenti caratteri speciali o spazi, i nomi verranno citati e utilizzati.
'".,{}()[]|+-_%~^#@/!><*&$:=?;\
Di seguito è riportata la convenzione di denominazione degli oggetti utilizzata da Automatic Schema Evolution per i seguenti casi d'uso:
-
Caso d'uso: Database di origine con distinzione tra maiuscole e minuscole
Opzioni Funzionamento Se si esegue la replica in un database di destinazione con distinzione tra maiuscole e minuscole, considerare il caso d'uso con:
Nome della tabella di origine
hr.employeeColumn idtipoint(chiave primaria)Tipo di nome
varchar
Se il nome della tabella di destinazione nella clausola
TARGETdell'istruzioneMAPcontiene un carattere jolly, vengono utilizzati lo stesso nome e lo stesso caso del nome di origine per la tabella di destinazione con le virgolette aggiunte.Esempio:
L'istruzione
MAPnel file dei parametri Replicat è la seguenteMAP hr.*, TARGET region.*;La funzionalità Evoluzione schema automatica genera DDL nel database di destinazione con distinzione tra maiuscole e minuscole come indicato di seguito.
CREATE TABLE "region"."employee" ( "id" int not null, "name" VARCHAR(20), primary key ("id"));Nota:
Il nome oggettoemployeeviene citato nel fileCREATE TABLE DDLperché il database di origine e di destinazione fa distinzione tra maiuscole e minuscole.Se si esegue la replica in un database di destinazione con distinzione tra maiuscole e minuscole, considerare il caso d'uso con:
Nome della tabella di origine
hr.employeeColumn idtipoint(chiave primaria)Tipo di nome
varchar
Se il nome della tabella di destinazione nella clausola
TARGETdell'istruzioneMAPcontiene un nome esplicito, vengono utilizzati lo stesso nome e lo stesso caso del nome di origine per la tabella di destinazione con le virgolette aggiunte.Esempio:
L'istruzione
MAPnel file dei parametri Replicat è la seguente:MAP hr.employee, TARGET region.employee, COLMAP(USEDEFAULTS, "EMPNAME" = name);La funzionalità Evoluzione schema automatica genera DDL nel database di destinazione con distinzione tra maiuscole e minuscole come indicato di seguito.
CREATE TABLE "region"."employee" ( "id" int not null, "EMPNAME" VARCHAR(20), primary key ("id"));Nota:
Il nome oggettoemployeenon contiene virgolette nel fileCREATE TABLE DDLpoiché il nome dell'oggetto nella clausolaTARGETdell'istruzioneMAPnon contiene virgolette.Se si esegue la replica in un database di destinazione senza distinzione tra maiuscole e minuscole, considerare lo use case con:
Nome della tabella di origine
hr.employeeColumn idtipoint(chiave primaria)Tipo di nome
varchar
Se il nome della tabella di destinazione nella clausola
Esempio:TARGETdell'istruzioneMAPcontiene un carattere jolly, per la tabella di destinazione vengono utilizzati lo stesso nome e lo stesso caso del nome di origine.L'istruzione map nel file dei parametri Replicat è la seguente:
MAP hr.*, TARGET region.*;La funzionalità Evoluzione schema automatica genera DDL nel database di destinazione senza distinzione tra maiuscole e minuscole come indicato di seguito.
CREATE TABLE region.employee (id int not null, name VARCHAR(20), primary key (id));Nota:
Il nome oggettoemployeenon contiene virgolette nel fileCREATE TABLE DDLperché la clausola target ha un nome carattere jolly senza virgolette.Se si esegue la replica in un database di destinazione senza distinzione tra maiuscole e minuscole, considerare lo use case con:
Nome della tabella di origine
hr.employeeColumn idtipoint(chiave primaria)Tipo di nome
varchar
Se il nome della tabella di destinazione nella clausola
Esempio:TARGETdell'istruzioneMAPcontiene un nome esplicito, per la tabella di destinazione vengono utilizzati lo stesso nome e lo stesso caso del nome di origine.L'istruzione
MAPnel file dei parametri Replicat è la seguente:MAP hr.employee, TARGET region."employee", COLMAP(USEDEFAULTS, "EMPNAME" = name);La funzionalità Evoluzione schema automatica genera DDL nel database di destinazione senza distinzione tra maiuscole e minuscole come indicato di seguito.
CREATE TABLE region."employee" ( id int not null, "EMPNAME" VARCHAR(20), primary key (id));Nota:
Il nome oggettoemployeeviene citato nel fileCREATE TABLE DDLpoiché il nome oggetto nella clausolaTARGETdell'istruzioneMAPè racchiuso tra virgolette.EMPNAMEè racchiuso tra virgolette in DDL, poiché è specificato come citato nella clausolaCOLMAP -
Caso d'uso: Database di origine senza distinzione tra maiuscole e minuscole
Opzioni Funzionamento Se si esegue la replica in un database di destinazione con distinzione tra maiuscole e minuscole, considerare lo use case con:
Nome della tabella di origine
hr.employeeColumn idtipoint(chiave primaria)Tipo di nome
varchar
Se il nome della tabella di destinazione nella clausola
Esempio:TARGETdell'istruzioneMAPcontiene un carattere jolly, per la tabella di destinazione vengono utilizzati lo stesso nome e lo stesso caso del nome di origine.L'istruzione
MAPnel file dei parametri Replicat è la seguente:MAP hr.*, TARGET region.*;La funzionalità Evoluzione schema automatica genera DDL nel database di destinazione con distinzione tra maiuscole e minuscole come indicato di seguito.
CREATE TABLE region.employee ( id int not null, name VARCHAR(20), primary key (id));Nota:
Il nome oggettoemployeenon contiene virgolette nel fileCREATE TABLE DDLperché la clausola target ha un nome carattere jolly senza virgolette.Se si esegue la replica in un database di destinazione con distinzione tra maiuscole e minuscole, considerare lo use case con:
Nome della tabella di origine
hr.employeeColumn idtipoint(chiave primaria)Tipo di nome
varchar
Se il nome della tabella di destinazione nella clausola
Esempio:TARGETdell'istruzioneMAPcontiene un nome esplicito, per la tabella di destinazione vengono utilizzati lo stesso nome e lo stesso caso del nome di origine.L'istruzione
MAPnel file dei parametri Replicat è la seguente:MAP hr.employee, TARGET region.employee, COLMAP(USEDEFAULTS, "EMPNAME" = name);La funzionalità Evoluzione schema automatica genera DDL nel database di destinazione con distinzione tra maiuscole e minuscole come indicato di seguito.
CREATE TABLE region.employee ( id int not null, "EMPNAME" VARCHAR(20), primary key (id));Nota:
Il nome oggettoemployeenon contiene virgolette nel fileCREATE TABLE DDLpoiché il nome dell'oggetto nella clausolaTARGETdell'istruzioneMAPnon contiene virgolette.Se si esegue la replica in un database di destinazione senza distinzione tra maiuscole e minuscole, considerare lo use case con:
Nome della tabella di origine
hr.employeeColumn idtipoint(chiave primaria)Tipo di nome
varchar
Se il nome della tabella di destinazione nella clausola
Esempio:TARGETdell'istruzioneMAPcontiene un carattere jolly, per la tabella di destinazione vengono utilizzati lo stesso nome e lo stesso caso del nome di origine.L'istruzione
MAPnel file dei parametri Replicat è la seguente:MAP hr.*, TARGET region.*;La funzionalità Evoluzione schema automatica genera DDL nel database di destinazione senza distinzione tra maiuscole e minuscole come indicato di seguito.
CREATE TABLE region.employee ( id int not null, name VARCHAR(20), primary key (id));Nota:
Il nome oggettoemployeenon contiene virgolette nel fileCREATE TABLE DDLperché la clausola target ha un nome carattere jolly senza virgolette.Se si esegue la replica in un database di destinazione senza distinzione tra maiuscole e minuscole, considerare lo use case con:
Nome della tabella di origine
hr.employeeColumn idtipoint(chiave primaria)Tipo di nome
varchar
Se il nome della tabella di destinazione nella clausola
Esempio:TARGETdell'istruzioneMAPcontiene un nome esplicito, per la tabella di destinazione vengono utilizzati lo stesso nome e lo stesso caso del nome di origine.L'istruzione
MAPnel file dei parametri Replicat è la seguente:MAP hr.employee, TARGET region.employee, COLMAP(USEDEFAULTS, EMPNAME = name);La funzionalità Evoluzione schema automatica genera DDL nel database di destinazione senza distinzione tra maiuscole e minuscole come indicato di seguito.
CREATE TABLE region.employee ( id int not null, EMPNAME VARCHAR(20), primary key (id));Nota:
Il nome oggettoemployeenon contiene virgolette nel fileCREATE TABLE DDLpoiché il nome dell'oggetto nella clausolaTARGETdell'istruzioneMAPnon contiene virgolette.