Reglas y acciones de transformación - AWS Database Migration Service

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, espacio de tablas o espacio de tablas de índices). 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 columnas en las reglas de transformación distinguen entre mayúsculas y minúsculas. Por ejemplo, debe proporcionar 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 con idiomas de derecha a izquierda.

  • No se pueden realizar transformaciones en columnas que contengan caracteres especiales (por ejemplo, #,\,/, -) en su nombre.

  • La única transformación admitida para las columnas que están mapeadas a tipos de datos BLOB/CLOB es colocar la columna en el destino.

  • AWS DMSno admite la replicación de dos tablas de origen en una sola tabla de destino. AWS DMSreplica los registros de una tabla a otra y de una columna a otra, de acuerdo con las reglas de transformación de las tareas de replicación. Los nombres de los objetos deben ser únicos para evitar la superposición.

    Por ejemplo, una tabla de origen tiene una columna denominadaID y la tabla de destino correspondiente tiene una columna preexistente denominadaid. Si una regla usa unaADD-COLUMN sentencia para añadir una nueva columna llamadaid y una sentencia SQLite para rellenar la columna con valores personalizados, se crea un objeto ambiguo duplicado con el nombreid y no se admite.

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.
rule-name Un valor alfanumérico. Un nombre exclusivo para identificar la regla.
object-locator Un objeto con los siguientes parámetros:
  • schema-name— El nombre del esquema. Para los endpoints de MongoDB y Amazon DocumentDB, este es el nombre de la base de datos que contiene un conjunto de colecciones.

  • table-name— El nombre de la tabla, vista o colección.

  • table-tablespace-name— El nombre de un espacio de tablas existente.

  • index-tablespace-name— El nombre de un espacio de tablas de índices existente.

  • column-name— El nombre de una columna existente.

  • data-type— El nombre de un tipo de datos de columna existente.

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 object-locator, excepto data-type. Así, puede hacer coincidir estos elementos:

  • Una única tabla o vista en un solo esquema

  • Una única tabla o vista en algunos o todos los esquemas

  • Algunas o todas las tablas y vistas en un solo esquema

  • Algunas o todas las tablas y vistas en algunos o todos los esquemas

  • Una o más columnas de la tabla o tablas, vista o vistas y esquema o esquemas especificados.

  • Las columnas con un data-type determinado cuando se especifican varias columnas. Para conocer los posibles valores de data-type, consulte data-type descrito en esta tabla.

Asimismo, el parámetro index-tablespace-name o table-tablespace-name solo está disponible para que coincida con un punto de enlace de origen de Oracle. Puede especificar table-tablespace-name o bien index-tablespace-name en una regla única, pero no ambos. De este modo, puede asignar cualquiera de los elementos siguientes:

  • Uno, algunos o todos los espacios de tablas de tabla

  • Uno, algunos o todos los espacios de tablas de índice

rule-action

add-column, include-column, remove-column

rename

convert-lowercase, convert-uppercase

add-prefix, remove-prefix, replace-prefix

add-suffix, remove-suffix, replace-suffix

define-primary-key

change-data-type

add-before-image-columns

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 add-column del parámetro rule-action agrega una columna a una tabla. Pero no puede agregar una columna nueva con el mismo nombre que una columna existente de la misma tabla.

Cuando se utiliza con los parámetros expression y data-type, add-column especifica el valor de los nuevos datos de columna.

El valor de change-data-type rule-action solo está disponible para los destinos de regla column.

Elinclude-column valor delrule-action parámetro cambia el modo de la tabla para eliminar todas las columnas de forma predeterminada e incluir las columnas especificadas. Se incluyen varias columnas en el destino al invocar lainclude-column regla varias veces.

rule-target schema, table, column, table-tablespace, index-tablespace El tipo de objeto que está transformando.

Los valores table-tablespace y index-tablespace solo están disponibles para un punto de enlace de destino de Oracle.

Asegúrese de especificar un valor para el parámetro que especifique como parte de object-locator: nombre de table-tablespace-name o index-tablespace-name.

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

type— El tipo de datos que se utilizará sirule-action esadd-column o el tipo de datos de reemplazo sirule-action lo eschange-data-type.

O bien, el nombre del tipo de datos de reemplazo cuando rule-action es change-data-type, el valor de column-name es "%", y se incluye un parámetro data-type adicional para identificar el tipo de datos existente en el object-locator.

AWS DMS admite transformaciones de tipos de datos de columna en los siguientes tipos de datos de DMS: "bytes", "date", "time", "datetime", "int1", "int2", "int4", "int8", "numeric", "real4", "real8", "string", "uint1", "uint2", "uint4", "uint8", "wstring", "blob", "nclob", "clob", "boolean", "set", "list" "map", "tuple"

precision— Si el tipo de datos de columna o reemplazo agregado tiene una precisión, un valor entero para especificar la precisión.

scale— Si el tipo de datos de columna o de reemplazo agregado tiene una escala, un valor entero o un valor de fecha y hora para especificar la escala.

length— La longitud de los datos de la nueva columna (cuando se usa conadd-column)

A continuación, hay un ejemplo de un parámetro data-type para especificar el tipo de datos existente que se va a reemplazar. Este parámetro data-type existente se incluye en el object-locator cuando el valor de column-name es "%", que se muestra a continuación.

. . . "object-locator": { "schema-name": "dbo", "table-name": "dms", "column-name": "%", "data-type": "int2" }, "data-type": { "type": "int8" }

Aquí, cualquier columna con el tipo de datos int2 se reemplaza con el tipo de datos int8.

El valor length de data-type solo está disponible para su uso con destinos de reglas de column de acciones de regla add-column.

expression Valor alfanumérico que sigue la sintaxis de SQLite.

Cuando se utiliza con el valor rule-action establecido en rename-schema, el parámetro expression especifica un nuevo esquema. Cuando se utiliza con el conjunto rule-action en rename-table, expression especifica una nueva tabla. Cuando se utiliza con el valor rule-action establecido en rename-column, expression especifica un nuevo valor de nombre de columna.

Cuando se utiliza con el conjunto rule-action en add-column, expression especifica los datos que componen una nueva columna.

Para obtener más información acerca del uso de expresiones para reglas de transformación, consulteUso de expresiones de regla de transformación para definir el contenido de columnas.

primary-key-def

Un objeto con los siguientes parámetros:

  • name— El nombre de una nueva clave principal o índice único para la tabla o vista.

  • (Opcional)origin: el tipo de clave única que se va a definir:primary-key (la predeterminada) ounique-index.

  • columns— Un conjunto de cadenas que enumeran los nombres de las columnas en el orden en que aparecen en la clave principal o en el índice único.

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:

  • column-prefix— Un valor precedido del nombre de una columna. El valor predeterminado es BI_.

  • column-suffix— Un valor agregado al nombre de la columna. El valor predeterminado es vacío.

  • column-filter— Requiere uno de los siguientes valores:pk-only (predeterminado),non-lob (opcional) yall (opcional).

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 rule-action se establece en add-before-image-columns y rule-target en column.

No configure ambas cadenas column-prefix y column-suffix como cadenas vacías.

En column-filter, seleccione:

  • pk-only— Para añadir solo columnas que formen parte de las claves principales de la tabla.

  • non-lob— Para añadir solo columnas que no sean de tipo LOB.

  • all— Para añadir cualquier columna que tenga un valor anterior a la imagen.

Para obtener más información sobre la compatibilidad con dispositivos deAWS DMS destino basados en imágenes anteriores a la imagen, 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" } } ] }

En este caso, la siguiente sentencia rellena unaBI_emp_no columna de la fila correspondiente con 1.

UPDATE employees SET emp_no = 3 WHERE emp_no = 1;

Al escribir actualizaciones de CDC en destinos AWS DMS compatibles, la columna BI_emp_no permite indicar qué filas tienen valores actualizados en la columna emp_no.