Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.
Operazioni e regole di trasformazione
Puoi utilizzare le operazioni di trasformazione per specificare le trasformazioni che desideri applicare alla tabella selezionata, allo schema selezionato o alla vista selezionata. Le regole di trasformazione sono opzionali.
Limitazioni
Non è possibile applicare più di un'azione della regola di trasformazione allo stesso oggetto (schema, tabella, colonna, table-tablespace o index-tablespace). È possibile applicare diverse azioni delle regole di trasformazione a qualsiasi livello, purché ogni azione di trasformazione venga applicata a un oggetto diverso.
I nomi di tabella e di colonna nelle regole di trasformazione rispettano la distinzione tra maiuscole e minuscole. Ad esempio, è necessario specificare in maiuscolo i nomi delle tabelle e delle colonne per un database Oracle o Db2.
Le trasformazioni non sono supportate per i nomi di colonna nelle lingue con scrittura sinistrorsa.
Le trasformazioni non possono essere eseguite su colonne che includono nel nome caratteri speciali (ad esempio #, \, /, -).
L'unica trasformazione supportata per le colonne mappate a tipi di dati BLOB/CLOB consiste nel rilasciare la colonna sulla destinazione.
AWS DMS non supporta la replica di due tabelle di origine in un'unica tabella di destinazione. AWS DMS replica i record da una tabella all'altra e da una colonna all'altra, in base alle regole di trasformazione dell'attività di replica. I nomi degli oggetti devono essere univoci per evitare sovrapposizioni.
Ad esempio, una tabella di origine ha una colonna denominata
ID
e la tabella di destinazione corrispondente ha una colonna preesistente denominataid
. Se una regola utilizza un'istruzioneADD-COLUMN
per aggiungere una nuova colonna chiamataid
e un'istruzione SQLite per popolare la colonna con valori personalizzati, si crea un oggetto duplicato e ambiguo denominatoid
che non è supportato.
Valori
Per le regole di mappatura delle tabelle che utilizzano il tipo di regola di trasformazione, sono applicabili i seguenti valori.
Parametro | Valori possibili | Descrizione |
---|---|---|
rule-type |
transformation |
Un valore che applica la regola a ogni oggetto specificato dalla regola di selezione. Usa transformation a meno che non sia indicato altrimenti. |
rule-id |
Un valore numerico. | Un valore numerico univoco per identificare la regola. Se si specificano più regole di trasformazione per lo stesso oggetto (schema, tabella, colonna, spazio tra tabelle o spazio tabellare indicizzato), AWS DMS applica la regola di trasformazione con l'id della regola inferiore. |
rule-name |
Un valore alfanumerico. | Un nome univoco per identificare la regola. |
object-locator |
Un oggetto con i seguenti parametri:
|
Il nome di ogni schema, tabella o vista, spazio tabella di tabella e spazio tabella di indice e di colonna a cui si applica la regola. È possibile utilizzare il simbolo di percentuale "%" come carattere jolly per tutto o parte del valore di ciascun parametro
Inoltre, il parametro
|
rule-action |
|
La trasformazione che desideri applicare all'oggetto. Tutte le operazioni delle regole di trasformazione prevedono una distinzione tra lettere maiuscole e minuscole. Il valore Se utilizzato con i parametri Il valore Il valore Non puoi usare una regola Per un'attività esistente, le azioni delle regole di trasformazione che alterano lo schema della tabella di destinazione, ad esempio |
rule-target |
schema , table ,
column , table-tablespace ,
index-tablespace |
Il tipo di oggetto che stai trasformando. I valori Assicurarsi di specificare un valore per il parametro specificato come parte del |
value |
Un valore alfanumerico che segue le regole di denominazione per il tipo di destinazione. | Il nuovo valore per operazioni che richiedono input, ad esempio rename . |
old-value |
Un valore alfanumerico che segue le regole di denominazione per il tipo di destinazione. | Il vecchio valore per operazioni che richiedono la sostituzione, ad esempio replace-prefix . |
data-type |
In alternativa, il nome del tipo di dati sostitutivo quando AWS DMS supporta le trasformazioni dei tipi di dati delle colonne per i seguenti tipi di dati DMS:
|
Di seguito è riportato un esempio di un parametro
Qui, la colonna |
expression |
Valore alfanumerico che segue la sintassi SQLite. |
Se utilizzato con Se utilizzato con Tieni presente che per questo parametro sono supportate solo le espressioni. Gli operatori e i comandi non sono supportati. Per ulteriori informazioni sull'utilizzo delle espressioni per le regole di trasformazione, consulta Utilizzo delle espressioni delle regole di trasformazione per definire il contenuto delle colonne. Per ulteriori informazioni sulle espressioni SQLite, consulta Utilizzo delle funzioni SQLite per creare espressioni. |
primary-key-def |
Un oggetto con i seguenti parametri:
|
Questo parametro può definire il nome, il tipo e il contenuto di una chiave univoca sulla tabella o sulla vista trasformata. Lo fa quando rule-action è impostato su define-primary-key e rule-target su table . Per impostazione predefinita, la chiave univoca viene definita come chiave primaria. |
before-image-def |
Un oggetto con i seguenti parametri:
|
Questo parametro definisce una convenzione di denominazione per identificare le colonne immagine precedente e specifica un filtro per identificare quali colonne di origine possono avere colonne immagine precedente create per esse sulla destinazione. È possibile specificare questo parametro quando Non impostare sia Per
Per ulteriori informazioni sul supporto dell'immagine precedente per gli endpoint di destinazione AWS DMS , consulta: |
Esempi
Esempio Assegnazione di un nuovo nome a uno schema
Nell'esempio seguente viene rinominato uno schema da Test
nell'origine a Test1
nella destinazione.
{ "rules": [ { "rule-type": "selection", "rule-id": "1", "rule-name": "1", "object-locator": { "schema-name": "Test", "table-name": "%" }, "rule-action": "include" }, { "rule-type": "transformation", "rule-id": "2", "rule-name": "2", "rule-action": "rename", "rule-target": "schema", "object-locator": { "schema-name": "Test" }, "value": "Test1" } ] }
Esempio Rinominare una tabella
Nell'esempio seguente viene rinominata una tabella da Actor
nell'origine a Actor1
nella destinazione.
{ "rules": [ { "rule-type": "selection", "rule-id": "1", "rule-name": "1", "object-locator": { "schema-name": "Test", "table-name": "%" }, "rule-action": "include" }, { "rule-type": "transformation", "rule-id": "2", "rule-name": "2", "rule-action": "rename", "rule-target": "table", "object-locator": { "schema-name": "Test", "table-name": "Actor" }, "value": "Actor1" } ] }
Esempio Ridenominazione di una colonna
Nell'esempio seguente viene rinominata una colonna nella tabella Actor
da first_name
nell'origine a fname
nella destinazione.
{ "rules": [ { "rule-type": "selection", "rule-id": "1", "rule-name": "1", "object-locator": { "schema-name": "test", "table-name": "%" }, "rule-action": "include" }, { "rule-type": "transformation", "rule-id": "4", "rule-name": "4", "rule-action": "rename", "rule-target": "column", "object-locator": { "schema-name": "test", "table-name": "Actor", "column-name" : "first_name" }, "value": "fname" } ] }
Esempio Rinominare uno spazio tabella di tabella Oracle
L'esempio seguente rinomina lo spazio tabella di tabella denominato SetSpace
per una tabella denominata Actor
nell'origine Oracle in SceneTblSpace
nell'endpoint Oracle di destinazione.
{ "rules": [ { "rule-type": "selection", "rule-id": "1", "rule-name": "1", "object-locator": { "schema-name": "Play", "table-name": "%" }, "rule-action": "include" }, { "rule-type": "transformation", "rule-id": "2", "rule-name": "2", "rule-action": "rename", "rule-target": "table-tablespace", "object-locator": { "schema-name": "Play", "table-name": "Actor", "table-tablespace-name": "SetSpace" }, "value": "SceneTblSpace" } ] }
Esempio Rinominare uno spazio tabella di indice Oracle
L'esempio seguente rinomina lo spazio tabella di indice denominato SetISpace
per una tabella denominata Actor
nell'origine Oracle in SceneIdxSpace
nell'endpoint Oracle di destinazione.
{ "rules": [ { "rule-type": "selection", "rule-id": "1", "rule-name": "1", "object-locator": { "schema-name": "Play", "table-name": "%" }, "rule-action": "include" }, { "rule-type": "transformation", "rule-id": "2", "rule-name": "2", "rule-action": "rename", "rule-target": "table-tablespace", "object-locator": { "schema-name": "Play", "table-name": "Actor", "table-tablespace-name": "SetISpace" }, "value": "SceneIdxSpace" } ] }
Esempio Aggiungere una colonna
Nell'esempio seguente viene aggiunta una colonna datetime
alla tabella Actor
nello schema test
.
{ "rules": [ { "rule-type": "selection", "rule-id": "1", "rule-name": "1", "object-locator": { "schema-name": "test", "table-name": "%" }, "rule-action": "include" }, { "rule-type": "transformation", "rule-id": "2", "rule-name": "2", "rule-action": "add-column", "rule-target": "column", "object-locator": { "schema-name": "test", "table-name": "actor" }, "value": "last_updated", "data-type": { "type": "datetime", "precision": 6 } } ] }
Esempio Rimozione di una colonna
Nell'esempio seguente viene trasformata la tabella denominata Actor
nell'origine per rimuovere da essa tutte le colonne che iniziano con i caratteri col
nella destinazione.
{ "rules": [{ "rule-type": "selection", "rule-id": "1", "rule-name": "1", "object-locator": { "schema-name": "test", "table-name": "%" }, "rule-action": "include" }, { "rule-type": "transformation", "rule-id": "2", "rule-name": "2", "rule-action": "remove-column", "rule-target": "column", "object-locator": { "schema-name": "test", "table-name": "Actor", "column-name": "col%" } }] }
Esempio Conversione in minuscolo
Nell'esempio seguente viene convertito un nome di tabella da ACTOR
nell'origine a actor
nella destinazione.
{ "rules": [{ "rule-type": "selection", "rule-id": "1", "rule-name": "1", "object-locator": { "schema-name": "test", "table-name": "%" }, "rule-action": "include" }, { "rule-type": "transformation", "rule-id": "2", "rule-name": "2", "rule-action": "convert-lowercase", "rule-target": "table", "object-locator": { "schema-name": "test", "table-name": "ACTOR" } }] }
Esempio Conversione in caratteri maiuscoli
Nell'esempio seguente vengono convertite tutte le colonne in tutte le tabelle e tutti gli schemi da caratteri minuscoli nell'origine a caratteri maiuscoli nella destinazione.
{ "rules": [ { "rule-type": "selection", "rule-id": "1", "rule-name": "1", "object-locator": { "schema-name": "test", "table-name": "%" }, "rule-action": "include" }, { "rule-type": "transformation", "rule-id": "2", "rule-name": "2", "rule-action": "convert-uppercase", "rule-target": "column", "object-locator": { "schema-name": "%", "table-name": "%", "column-name": "%" } } ] }
Esempio Aggiunta di un prefisso
Nell'esempio seguente tutte le tabelle nell'origine vengono trasformate con l'aggiunta del prefisso DMS_
nella destinazione.
{ "rules": [{ "rule-type": "selection", "rule-id": "1", "rule-name": "1", "object-locator": { "schema-name": "test", "table-name": "%" }, "rule-action": "include" }, { "rule-type": "transformation", "rule-id": "2", "rule-name": "2", "rule-action": "add-prefix", "rule-target": "table", "object-locator": { "schema-name": "test", "table-name": "%" }, "value": "DMS_" }] }
Esempio Sostituzione di un prefisso
Nell'esempio seguente tutte le colonne contenenti il prefisso Pre_
nell'origine vengono trasformate mediante la sostituzione del prefisso con NewPre_
nella destinazione.
{ "rules": [ { "rule-type": "selection", "rule-id": "1", "rule-name": "1", "object-locator": { "schema-name": "test", "table-name": "%" }, "rule-action": "include" }, { "rule-type": "transformation", "rule-id": "2", "rule-name": "2", "rule-action": "replace-prefix", "rule-target": "column", "object-locator": { "schema-name": "%", "table-name": "%", "column-name": "%" }, "value": "NewPre_", "old-value": "Pre_" } ] }
Esempio Rimozione di un suffisso
Nell'esempio seguente tutte le tabelle nell'origine vengono trasformate con la rimozione del suffisso _DMS
nella destinazione.
{ "rules": [{ "rule-type": "selection", "rule-id": "1", "rule-name": "1", "object-locator": { "schema-name": "test", "table-name": "%" }, "rule-action": "include" }, { "rule-type": "transformation", "rule-id": "2", "rule-name": "2", "rule-action": "remove-suffix", "rule-target": "table", "object-locator": { "schema-name": "test", "table-name": "%" }, "value": "_DMS" }] }
Esempio Definire una chiave primaria
L'esempio seguente definisce una chiave primaria denominata ITEM-primary-key
su tre colonne della tabella ITEM
migrata nell'endpoint di destinazione.
{ "rules": [{ "rule-type": "selection", "rule-id": "1", "rule-name": "1", "object-locator": { "schema-name": "inventory", "table-name": "%" }, "rule-action": "include" }, { "rule-type": "transformation", "rule-id": "2", "rule-name": "2", "rule-action": "define-primary-key", "rule-target": "table", "object-locator": { "schema-name": "inventory", "table-name": "ITEM" }, "primary-key-def": { "name": "ITEM-primary-key", "columns": [ "ITEM-NAME", "BOM-MODEL-NUM", "BOM-PART-NUM" ] } }] }
Esempio Definire un indice univoco
L'esempio seguente definisce un indice univoco denominato ITEM-unique-idx
su tre colonne della tabella ITEM
migrata verso l'endpoint di destinazione.
{ "rules": [{ "rule-type": "selection", "rule-id": "1", "rule-name": "1", "object-locator": { "schema-name": "inventory", "table-name": "%" }, "rule-action": "include" }, { "rule-type": "transformation", "rule-id": "2", "rule-name": "2", "rule-action": "define-primary-key", "rule-target": "table", "object-locator": { "schema-name": "inventory", "table-name": "ITEM" }, "primary-key-def": { "name": "ITEM-unique-idx", "origin": "unique-index", "columns": [ "ITEM-NAME", "BOM-MODEL-NUM", "BOM-PART-NUM" ] } }] }
Esempio Modifica del tipo di dati della colonna di destinazione
Nell'esempio seguente viene modificato il tipo di dati di una colonna di destinazione denominata SALE_AMOUNT
da un tipo di dati esistente su int8
.
{ "rule-type": "transformation", "rule-id": "1", "rule-name": "RuleName 1", "rule-action": "change-data-type", "rule-target": "column", "object-locator": { "schema-name": "dbo", "table-name": "dms", "column-name": "SALE_AMOUNT" }, "data-type": { "type": "int8" } }
Esempio Aggiungere una colonna dell'immagine precedente
Per una colonna di origine denominata emp_no
, la regola di trasformazione nell'esempio seguente aggiunge una nuova colonna denominata BI_emp_no
nella destinazione.
{ "rules": [{ "rule-type": "selection", "rule-id": "1", "rule-name": "1", "object-locator": { "schema-name": "%", "table-name": "%" }, "rule-action": "include" }, { "rule-type": "transformation", "rule-id": "2", "rule-name": "2", "rule-target": "column", "object-locator": { "schema-name": "%", "table-name": "employees" }, "rule-action": "add-before-image-columns", "before-image-def": { "column-prefix": "BI_", "column-suffix": "", "column-filter": "pk-only" } } ] }
Qui, l'istruzione seguente popola una colonna BI_emp_no
nella riga corrispondente con 1.
UPDATE employees SET emp_no = 3 WHERE BI_emp_no = 1;
Quando si scrivono aggiornamenti CDC su AWS DMS destinazioni supportate, la BI_emp_no
colonna consente di indicare quali righe hanno valori aggiornati nella colonna. emp_no