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 sullo 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. Tuttavia, questa restrizione non è applicabile quando si utilizzano regole di trasformazione con mascheramento dei dati in cui è possibile avere un'altra trasformazione simile o per la stessa colonna.
ADD-COLUMN
CHANGE-DATA-TYPE
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 con lingue. Right-to-Left
Le trasformazioni non possono essere eseguite su colonne che includono nel nome caratteri speciali (ad esempio #, \, /, -).
L'unica trasformazione supportata per le colonne mappate ai tipi di BLOB/CLOB dati 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'ADD-COLUMN
istruzione per aggiungere una nuova colonnaid
denominata e un' SQLite istruzione per popolare la colonna con valori personalizzati, ciò crea un oggetto duplicato e ambiguo denominatoid
e non è supportato.Quando si crea una regola di trasformazione, si consiglia di utilizzare il
data-type
parametro solo quando le regole di selezione specificano più colonne, ad esempio quando si imposta su.column-name
%
Non è consigliabile utilizzarlodata-type
per selezionare una singola colonna.-
AWS DMS non supporta le regole di trasformazione in cui gli oggetti di origine e di destinazione (tabelle) si trovano sullo stesso database/schema. L'utilizzo della stessa tabella come origine e destinazione in una regola di trasformazione può portare a risultati imprevisti e potenzialmente dannosi, tra cui, a titolo esemplificativo ma non esaustivo, alterazioni involontarie dei dati della tabella, modifiche delle strutture delle tabelle o persino l'eliminazione delle tabelle.
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 tabelle indicizzate), 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 I |
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: NotaAWS DMS può applicare trasformazioni da un tipo all'altro SOLO nei formati supportati. (ad esempio DATE dovrebbe essere rappresentato in
|
Di seguito è riportato un esempio di un parametro
Qui, la colonna |
expression |
Un valore alfanumerico che segue SQLite la sintassi. |
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 SQLite espressioni, vedere. Utilizzo di SQLite funzioni 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
NotaIl 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 stabilire quali righe hanno valori aggiornati nella colonna. emp_no