View a markdown version of this page

Reglas de selección en la conversión de esquemas de DMS - 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 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-name Estos motores tienen un database-name nivel 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ún database-name nivel; 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 esarn: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

"include"

Selecciona todos los objetos cuyos nombres coincidan con el patrón. Admite % (cualquier secuencia de cero o más caracteres) y _ (cualquier carácter único) como caracteres comodín. Se utiliza [_] para hacer coincidir un carácter de subrayado literal y [%] un carácter porcentual literal.

Se utiliza para hacer coincidir un grupo de objetos con un patrón de nomenclatura compartido.

"exclude"

Elimina los objetos del conjunto ya seleccionado por include las reglas anteriores. Una exclude regla sin precedentes no include tiene ningún efecto.

Se utiliza para separar las excepciones de una forma más ampliainclude.

"explicit"

Selecciona exactamente el objeto nombrado. Todos los valores del localizador schema-namedatabase-name, incluidas las claves de hoja, como table-name oscalar-function-name, se comparan como una cadena literal. Caracteres comodín como%, _[, y debajo no ] tienen ningún significado especial. explicit

Ú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.

SQL Server

Key

Selecciona

server-name

El servidor.

database-name

Una base de datos en el servidor.

schema-name

Un esquema dentro de la base de datos.

table-name

Una tabla por defecto, o una vista cuando se usa con"table-type": "view".

table-type

"table"(predeterminado) o"view".

procedure-name

Un procedimiento almacenado.

scalar-function-name

Una función con valores escalares.

table-valued-function-name

Una función con valores de tabla.

inline-function-name

Una función en línea.

aggregate-function-name

Una función agregada.

synonym-name

Un sinónimo.

sequence-name

Una secuencia.

type-name

Un tipo.

table-type-name

Un tipo de mesa.

user-defined-type-name

Un tipo definido por el usuario.

xml-schema-collection-name

Una colección de esquemas XML.

category-name

Una clase de objeto. Se utiliza para seleccionar una categoría completa de objetos; consulteNombres de categorías por motor.

Oracle

Key

Selecciona

server-name

El servidor.

schema-name

Un esquema (usuario de Oracle).

table-name

Una tabla por defecto o una vista cuando se usa con"table-type": "view".

table-type

"table"(predeterminado) o"view".

procedure-name

Un procedimiento almacenado.

function-name

Una función de .

package-name

Un paquete.

sequence-name

Una secuencia.

synonym-name

Un sinónimo.

type-name

Un tipo definido por el usuario.

materialized-view-name

Una vista materializada.

category-name

Una clase de objeto. Se utiliza para seleccionar una categoría completa de objetos; consulteNombres de categorías por motor.

SAP ASE (Sybase ASE)

Key

Selecciona

server-name

El servidor.

database-name

Una base de datos en el servidor.

schema-name

Un esquema dentro de la base de datos.

table-name

Una tabla por defecto, o una vista cuando se usa con"table-type": "view".

table-type

"table"(predeterminado) o"view".

materialized-view-name

Una vista materializada.

procedure-name

Un procedimiento almacenado.

scalar-function-name

Una función con valores escalares.

table-valued-function-name

Una función con valores de tabla.

user-defined-type-name

Un tipo definido por el usuario.

default-name

Un valor predeterminado definido por el usuario. Accesible solo a través deDescribe*.

category-name

Una clase de objeto. Se utiliza para seleccionar una categoría completa de objetos; consulteNombres de categorías por motor.

PostgreSQL

Key

Selecciona

server-name

El servidor.

schema-name

Un esquema.

table-name

Una tabla o una vista; se usa table-type para distinguir.

function-name

Una función de .

procedure-name

Un procedimiento almacenado.

sequence-name

Una secuencia.

materialized-view-name

Una vista materializada.

type-name

Un tipo definido por el usuario.

domain-name

Un dominio.

category-name

Una clase de objeto. Se utiliza para seleccionar una categoría completa de objetos; consulteNombres de categorías por motor.

MySQL

Key

Selecciona

server-name

El servidor.

schema-name

Un esquema.

table-name

Una tabla o una vista; se usa table-type para distinguir.

procedure-name

Un procedimiento almacenado.

function-name

Una función de .

event-name

Un evento.

category-name

Una clase de objeto. Se utiliza para seleccionar una categoría completa de objetos; consulteNombres de categorías por motor.

IBM Db2 for z/OS

Key

Selecciona

server-name

El servidor.

schema-name

Un esquema.

table-name

Una tabla, vista o tabla temporal global; se usa table-type para distinguir.

table-type

"table"(predeterminado) o"view".

procedure-name

Un procedimiento almacenado o un procedimiento externo.

function-name

Una función (función en línea, escalar, de origen, de tabla o externa).

sequence-name

Una secuencia.

alias-name

Un alias. Sin modelo de destino PostgreSQL; úselo con. StartMetadataModelExportAsScript Origin: SOURCE

mqtable-name

Una tabla de consultas materializadas (MQT). No hay un modelo de destino para PostgreSQL.

type-name

Un tipo definido por el usuario (tipo distinto o tipo estructurado). No hay un modelo de destino para PostgreSQL.

category-name

Una clase de objeto. Se utiliza para seleccionar una categoría completa de objetos; consulteNombres de categorías por motor.

IBM Db2 LUW

Key

Selecciona

server-name

El servidor.

schema-name

Un esquema.

table-name

Una tabla o una vista; se usa table-type para distinguir.

procedure-name

Un procedimiento almacenado.

function-name

Una función (función escalar, de origen o de tabla).

sequence-name

Una secuencia.

module-name

Un módulo.

category-name

Una clase de objeto. Se utiliza para seleccionar una categoría completa de objetos; consulteNombres de categorías por motor.

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.

SQL Server

Los siguientes nombres de categorías se aplican a las fuentes de Microsoft SQL Server.

Valor de category-name

Qué agrupa

Tables

Tablas base.

Views

Vistas.

Procedures

Procedimientos almacenados.

SQL scalar functions

T-SQL Funciones escalares.

SQL table-valued functions

Multi-statement funciones con valores de tabla.

SQL inline functions

Funciones con valores de tabla en línea.

Aggregate functions

User-defined funciones de agregación.

Synonyms

T-SQL sinónimos.

Sequences

Secuenciar objetos.

Types

Colecciones de esquemas XML y tipos de columnas.

Table types

Table-typed declaraciones de parámetros.

User-Defined Types

Tipos de alias y CLR definidos por el usuario.

XML Schema Collections

Colecciones de esquemas XML.

Oracle

Los siguientes nombres de categorías se aplican a las fuentes de Oracle.

Valor de category-name

Qué agrupa

Tables

Mesas.

External Tables

Tablas externas.

Views

Vistas.

Packages

PL/SQL especificaciones y cuerpos del paquete.

Procedures

Procedimientos almacenados.

Functions

Todas las funciones de usuario, incluidas las escalares y las canalizadas.

User Defined Types

Tipos de objetos.

Collection Types

Tipos VARRAY y mesas anidadas.

Sequences

Secuencias.

Materialized Views

Vistas materializadas.

Materialized View Logs

Materialized-view registros de cambios.

Synonyms

Sinónimos públicos y privados.

Clusters

Clústeres de índices y hash.

Database Links

Enlaces a bases de datos.

SAP ASE (Sybase ASE)

Los siguientes nombres de categorías se aplican a las fuentes de SAP ASE (Sybase ASE).

Valor de category-name

Qué agrupa

Tables

Tablas base.

Views

Vistas.

Procedures

Procedimientos almacenados.

Scalar Functions

T-SQL Funciones escalares.

Table Valued Functions

Table-valued funciones.

Materialized Views

Vistas materializadas.

User Defined Types

Tipos de alias definidos por el usuario.

Defaults

Objetos predeterminados enlazados. Describe-only; no se puede convertir de forma independiente.

PostgreSQL

Los siguientes nombres de categorías se aplican a los destinos de PostgreSQL y Aurora PostgreSQL.

Valor de category-name

Qué agrupa

Tables

Tablas base.

Views

Vistas.

Functions

Funciones.

Procedures

Procedimientos almacenados.

Sequences

Secuencias.

Materialized Views

Vistas materializadas.

Types

User-defined tipos.

Domains

Dominios.

MySQL

Los siguientes nombres de categorías se aplican a los destinos MySQL y Aurora MySQL.

Valor de category-name

Qué agrupa

Tables

Tablas base.

Views

Vistas.

Functions

Funciones.

Procedures

Procedimientos almacenados.

Events

Eventos.

IBM Db2 for z/OS

Los siguientes nombres de categorías se aplican a IBM Db2 para z/OS fuentes.

Valor de category-name

Clave de localización

Qué agrupa

Tables

table-name + "table-type": "table"

Tablas base.

Global Temporary Tables

table-name + "table-type": "table"

Tablas temporales globales. No hay un modelo de destino para PostgreSQL.

Materialized Query Tables

mqtable-name

Tablas de consultas materializadas (MQT). No hay un modelo de destino para PostgreSQL.

Views

table-name + "table-type": "view"

Vistas.

Aliases

alias-name

Alias. No hay un modelo de destino para PostgreSQL.

Procedures

procedure-name

Procedimientos almacenados.

Functions

function-name

Todos los subtipos de funciones: escalar, de tabla, en línea, de origen.

Sequences

sequence-name

Secuencias.

User Defined Types

type-name

Tipos distintos y tipos estructurados. No hay un modelo de destino para PostgreSQL.

External Routines

function-name / procedure-name

Funciones y procedimientos externos.

IBM Db2 LUW

Los siguientes nombres de categorías se aplican a los objetivos LUW de IBM Db2.

Valor de category-name

Qué agrupa

Tables

Tablas base.

Views

Vistas.

Functions

Funciones (escalares, de origen, de tabla).

Procedures

Procedimientos almacenados.

Sequences

Secuencias.

Modules

Módulos.

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" } } ] }