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 de selección en la conversión de esquemas de DMS
La conversión de esquemas de DMS convierte los esquemas de bases de datos de un motor a otro. Las reglas de selección se utilizan para controlar los objetos de la base de datos sobre los que actúa la conversión de esquemas de DMS durante operaciones como la evaluación, la conversión y la exportación. Una regla de selección es un objeto JSON que se pasa a través del SelectionRules parámetro (o --selection-rules en la AWS CLI). Sin una regla de selección, una operación no tiene nada sobre lo que actuar. Con una regla, puede limitar la operación a un solo objeto, un esquema completo, una base de datos completa (para fuentes de Microsoft SQL Server y SAP ASE (Sybase ASE)) o un grupo de objetos que coincidan con un patrón.
nota
Cuando utiliza la consola de AWS administración, DMS Schema Conversion crea reglas de selección automáticamente en función de las elecciones que haya realizado en la interfaz de usuario del proyecto de migración. Solo necesita escribir las reglas de selección directamente cuando utilice la API o AWS CLI de conversión de esquemas de DMS.
Se usa la misma forma de regla tanto en el lado de origen como en el de destino de un proyecto de migración. El server-name campo del localizador de objetos especifica si la regla se dirige al proveedor de datos de origen o al proveedor de datos de destino. Un único proyecto de migración suele utilizar ambos tipos de reglas: reglas de origen para la evaluación y la conversión y reglas de destino para la exportación de SQL.
Formato de reglas de selección
Un documento de reglas de selección es un objeto JSON con una sola rules matriz. Cada entrada de la matriz es una regla y cada regla debe contener todos los campos siguientes.
| Parámetro | Valor | Description (Descripción) |
|---|---|---|
rule-type |
selection |
Un valor que identifica el tipo de regla. Para todas las reglas de selección, establézcalo enselection. Parámetro necesario. |
rule-id |
Un valor numérico (entero). | Un identificador numérico único para la regla. Parámetro necesario. |
rule-name |
Un valor alfanumérico. | Un nombre exclusivo para identificar la regla. Parámetro necesario. |
rule-action |
explicit, include o exclude |
Un valor que determina cómo se interpreta el localizador de objetos. Consulte Acciones de reglas. Parámetro necesario. |
object-locator |
Un objeto JSON que contiene claves de localización específicas del motor. | Un objeto que identifica los objetos de la base de datos a los que se aplica la regla. Consulte Jerarquía de localizadores de objetos. Parámetro necesario. |
El siguiente ejemplo mínimo se dirige a un esquema de un servidor de origen.
{ "rules": [ { "rule-type": "selection", "rule-id": "1", "rule-name": "rule_name", "rule-action": "explicit", "object-locator": { "server-name": "source_server", "schema-name": "schema_name" } } ] }
nota
Al utilizar la AWS CLI, puede pasar las reglas de selección de las siguientes maneras. Se trata de una función AWS CLI estándar que funciona con cualquier parámetro de cadena.
-
En línea:
--selection-rules '{"rules":[...]}'(utilice comillas simples para evitar escapar de las comillas dobles de JSON) -
Ruta relativa:
--selection-rules file://example-rules.json -
Ruta absoluta:
--selection-rules file:///tmp/example-rules.json
Todos los valores de campo incluidos object-locator deben ser cadenas no vacías. Una cadena vacía (por ejemplo,"schema-name": "") se rechaza con el error.
nota
La database-name clave solo es válida para fuentes de Microsoft SQL Server y SAP ASE (Sybase ASE). El envío database-name de un localizador para cualquier otro motor de origen se rechaza por ser una clave no compatible.
Reglas de escritura
Jerarquía de localizadores de objetos
object-locatorIdentifica uno o más objetos de la base de datos mediante una jerarquía de claves específicas del motor. Cada clave reduce el alcance; omita una clave de nivel inferior para ampliarlo. La jerarquía depende del motor de origen:
-
Microsoft SQL Server y SAP ASE (Sybase ASE): clave de
server-name→database-name→schema-name→nivel de objeto (por ejemplo,).table-nameEstos motores tienen undatabase-namenivel adicional entre el servidor y el esquema. -
Todos los demás motores (Oracle, IBM Db2 for y todos los motores de destino: PostgreSQL z/OS, Aurora PostgreSQL, MySQL, Aurora MySQL e IBM Db2 LUW): clave a nivel de objeto.
server-name→schema-name→Estos motores no tienen ningúndatabase-namenivel; el esquema es el contenedor superior situado justo debajo.server-name
En el siguiente ejemplo, se selecciona una tabla específica de Microsoft SQL Server.
{ "rules": [ { "rule-type": "selection", "rule-id": "1", "rule-name": "rule_name", "rule-action": "explicit", "object-locator": { "server-name": "source_server", "database-name": "database_name", "schema-name": "schema_name", "table-name": "table_name" } } ] }
Para ampliar el ámbito a todo el esquema, omita la clave de nivel de hoja. Luego, la regla se aplica a todos los tipos de objetos direccionables de ese esquema, incluidas las tablas, las vistas, los procedimientos, las funciones, las secuencias y cualquier otro objeto que exponga el motor de origen.
{ "rules": [ { "rule-type": "selection", "rule-id": "1", "rule-name": "rule_name", "rule-action": "explicit", "object-locator": { "server-name": "source_server", "database-name": "database_name", "schema-name": "schema_name" } } ] }
Las claves de localización que puede utilizar dependen del motor de origen o de destino. Para obtener la referencia clave completa por motor, consulteClaves localizadoras de objetos por base de datos.
Reglas de origen y reglas de destino
Ningún rule-type campo explícito marca una regla como «origen» o «destino». La distinción se controla completamente mediante el server-name valor del object-locator siguiente: si server-name coincide con su proveedor de datos de origen, la regla se dirige al árbol de metadatos de origen; si coincide con su proveedor de datos de destino, la regla se dirige al árbol de metadatos de destino.
Pues server-name puede utilizar cualquiera de las siguientes opciones:
-
El valor del nombre del servidor configurado en el proveedor de datos. Suele ser un nombre de host o una dirección IP, pero debe coincidir exactamente con el valor almacenado en el proveedor de datos, no con un nombre de DNS o una dirección IP diferentes que se dirijan a la misma máquina.
-
El ID de recurso del proveedor de datos: el último segmento de su ARN (por ejemplo, si el ARN es
arn:aws:dms:us-east-1:111122223333:data-provider:EXAMPLEABCDEFGHIJKLMNOPQRS, el ID del recurso es).EXAMPLEABCDEFGHIJKLMNOPQRS
Acciones de reglas
Utilice el rule-action campo para especificar cómo DMS Schema Conversion interpreta los valores del localizador de objetos. Solo puede utilizar caracteres comodín con y. include exclude
Valor |
Comportamiento |
Cuándo se debe usar |
|---|---|---|
|
Selecciona todos los objetos cuyos nombres coincidan con el patrón. Admite |
Se utiliza para hacer coincidir un grupo de objetos con un patrón de nomenclatura compartido. |
|
Elimina los objetos del conjunto ya seleccionado por |
Se utiliza para separar las excepciones de una forma más amplia |
|
Selecciona exactamente el objeto nombrado. Todos los valores del localizador |
Úsalos cuando sepas el nombre exacto de cada objeto sobre el que quieras actuar. |
nota
Algunas operaciones solo aceptan "explicit" reglas y no admiten "include" o"exclude". Consulta la referencia de la AWS API de la operación específica para confirmar qué acciones de regla admite.
Referencia del localizador de objetos
Claves localizadoras de objetos por base de datos
Las siguientes pestañas muestran las claves de localización de cada base de datos compatible.
Nombres de categorías por motor
El category-name valor de una regla de selección se dirige a toda una clase de objetos y no a objetos individuales. Los nombres de las categorías son específicos del motor y distinguen mayúsculas de minúsculas. La aceptación de una operación category-name depende de la operación; consulta la referencia de la AWS API para la operación que estés utilizando. Las pestañas siguientes cubren los motores de origen y destino.
importante
Al enviar el nombre de una categoría desde un motor a un proyecto configurado para un motor diferente, se produce un error.
Ejemplos de reglas de selección
Los siguientes ejemplos muestran cómo escribir reglas de selección para escenarios de migración comunes. Cada ejemplo utiliza el valor del --selection-rules parámetro que se transferiría a las operaciones de la API de conversión de esquemas de DMS, como StartMetadataModelConversion oStartMetadataModelAssessment.
Seleccione una tabla específica para la conversión desde una fuente de Microsoft SQL Server. Microsoft SQL Server requiere database-name además deschema-name.
{ "rules": [ { "rule-type": "selection", "rule-id": "1", "rule-name": "rule_name", "rule-action": "explicit", "object-locator": { "server-name": "source_server", "database-name": "database_name", "schema-name": "schema_name", "table-name": "table_name" } } ] }
Seleccione todos los objetos de un esquema de Oracle omitiendo la clave de nivel de objeto. Oracle no tiene ningún database-name nivel; el esquema es el contenedor superior inferior. server-name
{ "rules": [ { "rule-type": "selection", "rule-id": "1", "rule-name": "rule_name", "rule-action": "explicit", "object-locator": { "server-name": "source_server", "schema-name": "schema_name" } } ] }
Las vistas de Oracle se abordan table-name con"table-type": "view". No hay una view-name clave separada.
{ "rules": [ { "rule-type": "selection", "rule-id": "1", "rule-name": "rule_name", "rule-action": "explicit", "object-locator": { "server-name": "source_server", "schema-name": "schema_name", "table-name": "view_name", "table-type": "view" } } ] }
Seleccione un procedimiento almacenado específico de un IBM Db2 como fuente. z/OS Se z/OS utiliza IBM Db2 procedure-name y pasa directamente de un nivel server-name a otro schema-name sin database-name nivel.
{ "rules": [ { "rule-type": "selection", "rule-id": "1", "rule-name": "rule_name", "rule-action": "explicit", "object-locator": { "server-name": "source_server", "schema-name": "schema_name", "procedure-name": "procedure_name" } } ] }
Seleccione todos los procedimientos de un esquema de SAP ASE (Sybase ASE) utilizándolos % como comodín para. procedure-name SAP ASE (Sybase ASE) requiere database-name entre y. server-name schema-name
{ "rules": [ { "rule-type": "selection", "rule-id": "1", "rule-name": "rule_name", "rule-action": "include", "object-locator": { "server-name": "source_server", "database-name": "database_name", "schema-name": "dbo", "procedure-name": "%" } } ] }
Se utiliza % para hacer coincidir varias tablas por prefijo. En este ejemplo se seleccionan todas las tablas cuyos nombres comiencen por. Fact_
{ "rules": [ { "rule-type": "selection", "rule-id": "1", "rule-name": "rule_name", "rule-action": "include", "object-locator": { "server-name": "source_server", "database-name": "database_name", "schema-name": "dbo", "table-name": "Fact_%" } } ] }
Incluya todos los objetos en un esquema de Oracle y, a continuación, excluya las tablas cuyos nombres comiencen por. TMP_ Las reglas se evalúan en rule-id orden; tienen exclude prioridad cuando coinciden.
{ "rules": [ { "rule-type": "selection", "rule-id": "1", "rule-name": "rule_name", "rule-action": "include", "object-locator": { "server-name": "source_server", "schema-name": "schema_name" } }, { "rule-type": "selection", "rule-id": "2", "rule-name": "rule_name", "rule-action": "exclude", "object-locator": { "server-name": "source_server", "schema-name": "schema_name", "table-name": "TMP_%" } } ] }
Utilice varias explicit reglas en un solo documento para seleccionar un conjunto específico de procedimientos por nombre.
{ "rules": [ { "rule-type": "selection", "rule-id": "1", "rule-name": "rule_name", "rule-action": "explicit", "object-locator": { "server-name": "source_server", "database-name": "database_name", "schema-name": "dbo", "procedure-name": "PROC_A" } }, { "rule-type": "selection", "rule-id": "2", "rule-name": "rule_name", "rule-action": "explicit", "object-locator": { "server-name": "source_server", "database-name": "database_name", "schema-name": "dbo", "procedure-name": "PROC_B" } }, { "rule-type": "selection", "rule-id": "3", "rule-name": "rule_name", "rule-action": "explicit", "object-locator": { "server-name": "source_server", "database-name": "database_name", "schema-name": "dbo", "procedure-name": "PROC_C" } } ] }
Utilice una include regla para hacer coincidir todos los procedimientos cuyo nombre comience por yPROC_, a continuación, una exclude regla para eliminarlos PROC_TEST de ese conjunto. Una exclude regla debe seguir una include regla; una regla independiente no exclude tiene ningún efecto.
{ "rules": [ { "rule-type": "selection", "rule-id": "1", "rule-name": "rule_name", "rule-action": "include", "object-locator": { "server-name": "source_server", "database-name": "database_name", "schema-name": "dbo", "procedure-name": "PROC_%" } }, { "rule-type": "selection", "rule-id": "2", "rule-name": "rule_name", "rule-action": "exclude", "object-locator": { "server-name": "source_server", "database-name": "database_name", "schema-name": "dbo", "procedure-name": "PROC_TEST" } } ] }