Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.
Reglas y acciones de transformación
Puede utilizar las acciones de transformación para especificar las transformaciones que desea aplicar al esquema, la tabla o la vista seleccionados. Las reglas de transformación son opcionales.
Limitaciones
No puede aplicar más de una acción de regla de transformación al mismo objeto (esquema, tabla, columna, tabla-espacio de tabla o índice-espacio de tabla). Puede aplicar varias acciones de reglas de transformación en cualquier nivel, siempre que cada acción de transformación se aplique a un objeto diferente.
Los nombres de las tablas y los nombres de las columnas en las reglas de transformación distinguen entre mayúsculas y minúsculas. Por ejemplo, debe proporcionar los nombres de las tablas y los nombres de las columnas de una base de datos Oracle o Db2 en mayúsculas.
No se admiten transformaciones para los nombres de columnas en idiomas que se escriben de derecha a izquierda.
Las transformaciones no se pueden realizar en columnas que contengan caracteres especiales (por ejemplo, #, \, /, -) en el nombre.
La única transformación que se admite para las columnas que están asignadas a tipos de datos BLOB/CLOB es colocar la columna en el destino.
AWS DMS no admite la replicación de dos tablas de origen en una sola tabla de destino. AWS DMS replica los registros de una tabla a otra y de una columna a otra, de acuerdo con las reglas de transformación de la tarea de replicación. Los nombres de los objetos deben ser únicos para evitar que se superpongan.
Por ejemplo, una tabla de origen tiene una columna denominada
ID
y la tabla de destino correspondiente tiene una columna preexistente denominadaid
. Si una regla utiliza una instrucciónADD-COLUMN
para agregar una nueva columna denominadaid
y una instrucción SQLite para rellenar la columna con valores personalizados, se crea un objeto duplicado y ambiguo denominadoid
y no se admite.Al crear una regla de transformación, se recomienda utilizar el
data-type
parámetro solo cuando las reglas de selección especifiquen varias columnas, por ejemplo, cuando se establececolumn-name
en.%
No se recomienda utilizarlodata-type
para seleccionar una sola columna.
Valores
Para las reglas de correspondencia de tablas utilice el tipo de regla de transformación; se pueden aplicar los valores siguientes.
Parámetro | Valores posibles | Descripción |
---|---|---|
rule-type |
transformation |
Un valor que aplica la regla a cada objeto especificado mediante la regla de selección. Utilice transformation a menos que se indique lo contrario. |
rule-id |
Un valor numérico. | Un único valor numérico para identificar la regla. Si especificas varias reglas de transformación para el mismo objeto (esquema, tabla, columna, espacio entre tablas o espacio de tablas de índices), AWS DMS aplica la regla de transformación con el identificador de regla inferior. |
rule-name |
Un valor alfanumérico. | Un nombre exclusivo para identificar la regla. |
object-locator |
Un objeto con los siguientes parámetros:
|
El nombre de cada esquema, tabla o vista, espacio de tabla de la tabla y espacio de tabla del índice al que se aplica la regla. Puede utilizar el símbolo de porcentaje "%" como carácter comodín para la totalidad o parte del valor de cada parámetro
Asimismo, el parámetro
|
rule-action |
|
La transformación que desea aplicar al objeto. Todas las acciones de las reglas de transformación distinguen entre mayúsculas y minúsculas. El valor Cuando se utiliza con los parámetros El valor de El valor No puede usar una regla Para una tarea existente, las acciones de las reglas de transformación que alteran el esquema de la tabla de destino como |
rule-target |
schema , table ,
column , table-tablespace ,
index-tablespace |
El tipo de objeto que está transformando. Los valores Asegúrese de especificar un valor para el parámetro que especifique como parte de |
value |
Un valor alfanumérico que sigue las reglas de nomenclatura para el tipo de destino. | El nuevo valor para las acciones que requieren entradas, como rename . |
old-value |
Un valor alfanumérico que sigue las reglas de nomenclatura para el tipo de destino. | El valor antiguo para las acciones que requieran sustitución, como replace-prefix . |
data-type |
O bien, el nombre del tipo de datos de reemplazo cuando AWS DMS admite las transformaciones de tipos de datos de columna para los siguientes tipos de datos de DMS:
|
A continuación, hay un ejemplo de un parámetro
Aquí, la columna |
expression |
Valor alfanumérico que sigue la sintaxis de SQLite. |
Cuando se utiliza con el valor Cuando se utiliza con el conjunto Tenga en cuenta que solo se admiten expresiones para este parámetro. Los operadores y comandos no son compatibles. Para obtener más información sobre el uso de expresiones para reglas de transformación, consulte Uso de expresiones de regla de transformación para definir el contenido de columnas. Para obtener más información sobre las expresiones SQLite, consulte Uso de funciones de SQLite para crear expresiones. |
primary-key-def |
Un objeto con los siguientes parámetros:
|
Este parámetro puede definir el nombre, el tipo y el contenido de una clave única en la tabla o vista transformada. Lo hace cuando rule-action se establece en define-primary-key y rule-target se establece en table . De forma predeterminada, la clave única se define como una clave primaria. |
before-image-def |
Un objeto con los siguientes parámetros:
|
Este parámetro define una convención de nomenclatura para identificar las columnas de imagen anterior y especifica un filtro para identificar qué columnas de origen pueden tener columnas de imagen anterior creadas para ellas en el destino. Puede especificar este parámetro cuando No configure ambas cadenas En
Para obtener más información sobre la compatibilidad con imágenes anteriores para los puntos de conexión de destino de AWS DMS , consulte: |
Ejemplos
ejemplo Cambiar el nombre a un esquema
En el siguiente ejemplo, se cambia el nombre de un esquema de Test
en el origen a Test1
en el destino.
{ "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" } ] }
ejemplo Cambiar el nombre a una tabla
En el siguiente ejemplo, se cambia el nombre de una tabla de Actor
en el origen a Actor1
en el destino.
{ "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" } ] }
ejemplo Cambiar el nombre de una columna
En el siguiente ejemplo, se cambia el nombre de una columna en una tabla Actor
de first_name
en el origen a fname
en el destino.
{ "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" } ] }
ejemplo Cambiar el nombre a un espacio de tabla de tabla de Oracle
En el siguiente ejemplo se cambia el nombre del espacio de tabla de tabla denominado SetSpace
para una tabla denominada Actor
en su origen de Oracle a SceneTblSpace
en su punto de enlace de destino de Oracle.
{ "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" } ] }
ejemplo Cambiar el nombre a un espacio de tabla de índice de Oracle
En el siguiente ejemplo se cambia el nombre del espacio de tabla de índice denominado SetISpace
para una tabla denominada Actor
en su origen de Oracle a SceneIdxSpace
en su punto de enlace de destino de Oracle.
{ "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" } ] }
ejemplo Agregar una columna
En el ejemplo siguiente se agrega una columna datetime
a la tabla Actor
en el esquema 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 } } ] }
ejemplo Quitar una columna
En el siguiente ejemplo, se transforma la tabla denominada Actor
en el origen para que se quiten todas las columnas que empiecen por los caracteres col
en el destino.
{ "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%" } }] }
ejemplo Cambiar a minúsculas
En el siguiente ejemplo, se convierte el nombre de una tabla de ACTOR
en el origen a actor
en el destino.
{ "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" } }] }
ejemplo Cambiar a mayúsculas
En el siguiente ejemplo, se cambian todas las columnas de todas las tablas y todos los esquemas de minúsculas en el origen a mayúsculas en el destino.
{ "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": "%" } } ] }
ejemplo Agregar un prefijo
En el siguiente ejemplo se transforman todas las tablas en el origen para añadirles el prefijo DMS_
en el destino.
{ "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_" }] }
ejemplo Sustituir un prefijo
En el siguiente ejemplo, se transforman todas las columnas que contienen el prefijo Pre_
en el origen y se sustituye por NewPre_
en el destino.
{ "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_" } ] }
ejemplo Quitar un sufijo
En el siguiente ejemplo, se transforman todas las tablas en el origen para quitarles el sufijo _DMS
en el destino.
{ "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" }] }
ejemplo Definir una clave principal
En el siguiente ejemplo se define una clave principal denominada ITEM-primary-key
en tres columnas de la tabla ITEM
migrada a su punto de enlace de destino.
{ "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" ] } }] }
ejemplo Definir un índice único
En el siguiente ejemplo se define un índice único denominado ITEM-unique-idx
en tres columnas de la tabla ITEM
migrada a su punto de enlace de destino.
{ "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" ] } }] }
ejemplo Cambiar el tipo de datos de la columna de destino
En el ejemplo siguiente se cambia el tipo de datos de una columna de destino denominada SALE_AMOUNT
de un tipo de datos existente a 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" } }
ejemplo Agregar una columna de imagen anterior
En una columna de origen denominada emp_no
, la regla de transformación del siguiente ejemplo agrega una nueva columna llamada BI_emp_no
en el destino.
{ "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" } } ] }
Aquí, la siguiente instrucción rellena una columna BI_emp_no
de la fila correspondiente con 1.
UPDATE employees SET emp_no = 3 WHERE BI_emp_no = 1;
Al escribir las actualizaciones de los CDC para los AWS DMS objetivos compatibles, la BI_emp_no
columna permite saber qué filas tienen valores actualizados en la emp_no
columna.