View a markdown version of this page

Regras de seleção na conversão do esquema DMS - AWS Database Migration Service

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

Regras de seleção na conversão do esquema DMS

A conversão de esquema do DMS converte esquemas de banco de dados de um mecanismo para outro. Você usa regras de seleção para controlar em quais objetos do banco de dados o DMS Schema Conversion atua durante operações como avaliação, conversão e exportação. Uma regra de seleção é um objeto JSON que você passa pelo SelectionRules parâmetro (ou --selection-rules na AWS CLI). Sem uma regra de seleção, uma operação não tem nada sobre o que agir. Com uma regra, você pode definir o escopo da operação para um único objeto, um esquema inteiro, um banco de dados inteiro (para fontes do Microsoft SQL Server e SAP ASE (Sybase ASE)) ou um grupo de objetos que correspondam a um padrão.

nota

Quando você usa o AWS Management Console, o DMS Schema Conversion cria regras de seleção automaticamente com base em suas escolhas na interface do usuário do projeto de migração. Você só precisa escrever regras de seleção diretamente ao usar a API ou a CLI AWS de conversão de esquema do DMS.

Você usa a mesma forma de regra nos lados de origem e destino de um projeto de migração. O server-name campo no localizador de objetos especifica se a regra tem como alvo o provedor de dados de origem ou o provedor de dados de destino. Um único projeto de migração geralmente usa os dois tipos de regras: regras de origem para avaliação e conversão; regras de destino para exportação de SQL.

Formato das regras de seleção

Um documento de regras de seleção é um objeto JSON com uma única rules matriz. Cada entrada na matriz é uma regra, e cada regra deve conter todos os campos a seguir.

Parâmetro Valor Description
rule-type selection Um valor que identifica o tipo de regra. Para todas as regras de seleção, defina isso comoselection. Parâmetro necessário.
rule-id Um valor numérico (inteiro). Um identificador numérico exclusivo para a regra. Parâmetro necessário.
rule-name Um valor alfanumérico. Um nome exclusivo para identificar a regra. Parâmetro necessário.
rule-action explicit, include ou exclude Um valor que determina como o localizador de objetos é interpretado. Consulte Ações de regra. Parâmetro necessário.
object-locator Um objeto JSON contendo chaves localizadoras específicas do mecanismo. Um objeto que identifica os objetos do banco de dados aos quais a regra se aplica. Consulte Hierarquia do localizador de objetos. Parâmetro necessário.

O exemplo mínimo a seguir tem como alvo um esquema em um servidor de origem.

{ "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

Ao usar a AWS CLI, você pode passar as regras de seleção das seguintes maneiras. Esse é um recurso AWS CLI padrão que funciona com qualquer parâmetro de string.

  • Em linha: --selection-rules '{"rules":[...]}' (use aspas simples para evitar escapar das aspas duplas do JSON)

  • Caminho relativo: --selection-rules file://example-rules.json

  • Caminho absoluto: --selection-rules file:///tmp/example-rules.json

Todos os valores de campo dentro object-locator devem ser cadeias de caracteres não vazias. Uma string vazia (por exemplo,"schema-name": "") é rejeitada com o erro.

nota

A database-name chave é válida somente para fontes do Microsoft SQL Server e do SAP ASE (Sybase ASE). O envio database-name de um localizador para qualquer outro mecanismo de origem é rejeitado como uma chave não suportada.

Regras de escrita

Hierarquia do localizador de objetos

O object-locator identifica um ou mais objetos do banco de dados por meio de uma hierarquia de chaves específicas do mecanismo. Cada chave restringe o escopo; omita uma chave de nível inferior para ampliar o escopo. A hierarquia depende do mecanismo de origem:

  • Microsoft SQL Server e SAP ASE (Sybase ASE) — chave em server-name database-name schema-name nível de objeto (por exemplo,). table-name Esses mecanismos têm um database-name nível extra entre o servidor e o esquema.

  • Todos os outros mecanismos (Oracle, IBM Db2 for e todos os mecanismos de destino: PostgreSQL z/OS, Aurora PostgreSQL, MySQL, Aurora MySQL e IBM Db2 LUW) — chave em nível de objeto. server-name schema-name Esses motores não têm database-name nível; o esquema é o contêiner superior diretamente abaixoserver-name.

O exemplo a seguir seleciona uma tabela específica do 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 o escopo para todo o esquema, omita a chave no nível da folha. A regra então se aplica a todos os tipos de objetos endereçáveis nesse esquema, incluindo tabelas, visualizações, procedimentos, funções, sequências e quaisquer outros objetos que o mecanismo de origem exponha.

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

As teclas localizadoras que você pode usar dependem do mecanismo de origem ou de destino. Para obter a referência chave completa por motor, consulteChaves de localização de objetos por banco de dados.

Regras de origem e regras de destino

Nenhum rule-type campo explícito marca uma regra como “origem” ou “destino”. Você controla a distinção inteiramente por meio do server-name valor emobject-locator: se server-name corresponder ao seu provedor de dados de origem, a regra tem como alvo a árvore de metadados de origem; se corresponder ao seu provedor de dados de destino, a regra tem como alvo a árvore de metadados de destino.

Pois server-name você pode usar:

  • O valor do nome do servidor configurado no provedor de dados. Normalmente, é um nome de host ou endereço IP, mas deve corresponder exatamente ao valor armazenado no provedor de dados — não a um nome DNS ou IP diferente que seja resolvido na mesma máquina.

  • O ID do recurso do provedor de dados — o último segmento de seu ARN (por exemplo, se o ARN forarn:aws:dms:us-east-1:111122223333:data-provider:EXAMPLEABCDEFGHIJKLMNOPQRS, o ID do recurso será). EXAMPLEABCDEFGHIJKLMNOPQRS

Ações de regra

Use o rule-action campo para especificar como a Conversão de Esquema do DMS interpreta os valores dentro do localizador de objetos. Você pode usar curingas somente com include e. exclude

Valor

Comportamento

Quando usar

"include"

Seleciona todos os objetos cujos nomes correspondem ao padrão. Suporta % (qualquer sequência de zero ou mais caracteres) e _ (qualquer caractere único) como curingas. Use [_] para combinar um sublinhado literal e [%] para corresponder a um caractere de porcentagem literal.

Use para combinar um grupo de objetos com um padrão de nomenclatura compartilhado.

"exclude"

Remove objetos do conjunto já selecionado pelas include regras anteriores. Uma exclude regra sem precedente não include tem efeito.

Use para extrair exceções de uma mais ampla. include

"explicit"

Seleciona exatamente o objeto nomeado. Cada valor do localizador, incluindo schema-namedatabase-name, e qualquer chave de folha, como table-name ouscalar-function-name, é correspondido como uma string literal. Caracteres curinga como%,, _[, e não ] têm nenhum significado especial abaixoexplicit.

Use quando você souber o nome exato de cada objeto sobre o qual deseja agir.

nota

Algumas operações aceitam apenas "explicit" regras e não suportam "include" ou"exclude". Verifique a Referência AWS da API da operação específica para confirmar quais ações de regras ela suporta.

Referência do localizador de objetos

Chaves de localização de objetos por banco de dados

As guias a seguir mostram as chaves de localização para cada banco de dados compatível.

SQL Server

Chave

Seleciona

server-name

O servidor.

database-name

Um banco de dados no servidor.

schema-name

Um esquema dentro do banco de dados.

table-name

Uma tabela por padrão ou uma exibição quando usada com"table-type": "view".

table-type

"table"(padrão) ou"view".

procedure-name

Um procedimento armazenado.

scalar-function-name

Uma função com valor escalar.

table-valued-function-name

Uma função com valor de tabela.

inline-function-name

Uma função embutida.

aggregate-function-name

Uma função agregada.

synonym-name

Um sinônimo.

sequence-name

Uma sequência.

type-name

Um tipo.

table-type-name

Um tipo de tabela.

user-defined-type-name

Um tipo definido pelo usuário.

xml-schema-collection-name

Uma coleção de esquemas XML.

category-name

Uma classe de objeto. Use para atingir uma categoria inteira de objetos; consulteNomes de categorias por motor.

Oracle

Chave

Seleciona

server-name

O servidor.

schema-name

Um esquema (usuário Oracle).

table-name

Uma tabela por padrão ou uma exibição quando usada com"table-type": "view".

table-type

"table"(padrão) ou"view".

procedure-name

Um procedimento armazenado.

function-name

Uma função do .

package-name

Um pacote.

sequence-name

Uma sequência.

synonym-name

Um sinônimo.

type-name

Um tipo definido pelo usuário.

materialized-view-name

Uma visão materializada.

category-name

Uma classe de objeto. Use para atingir uma categoria inteira de objetos; consulteNomes de categorias por motor.

SAP ASE (Sybase ASE)

Chave

Seleciona

server-name

O servidor.

database-name

Um banco de dados no servidor.

schema-name

Um esquema dentro do banco de dados.

table-name

Uma tabela por padrão ou uma exibição quando usada com"table-type": "view".

table-type

"table"(padrão) ou"view".

materialized-view-name

Uma visão materializada.

procedure-name

Um procedimento armazenado.

scalar-function-name

Uma função com valor escalar.

table-valued-function-name

Uma função com valor de tabela.

user-defined-type-name

Um tipo definido pelo usuário.

default-name

Um padrão definido pelo usuário. Acessível somente por meio Describe* de.

category-name

Uma classe de objeto. Use para atingir uma categoria inteira de objetos; consulteNomes de categorias por motor.

PostgreSQL

Chave

Seleciona

server-name

O servidor.

schema-name

Um esquema.

table-name

Uma tabela ou uma exibição; use table-type para distinguir.

function-name

Uma função do .

procedure-name

Um procedimento armazenado.

sequence-name

Uma sequência.

materialized-view-name

Uma visão materializada.

type-name

Um tipo definido pelo usuário.

domain-name

Um domínio.

category-name

Uma classe de objeto. Use para atingir uma categoria inteira de objetos; consulteNomes de categorias por motor.

MySQL

Chave

Seleciona

server-name

O servidor.

schema-name

Um esquema.

table-name

Uma tabela ou uma exibição; use table-type para distinguir.

procedure-name

Um procedimento armazenado.

function-name

Uma função do .

event-name

Um evento.

category-name

Uma classe de objeto. Use para atingir uma categoria inteira de objetos; consulteNomes de categorias por motor.

IBM Db2 for z/OS

Chave

Seleciona

server-name

O servidor.

schema-name

Um esquema.

table-name

Uma tabela, exibição ou tabela temporária global; use table-type para distinguir.

table-type

"table"(padrão) ou"view".

procedure-name

Um procedimento armazenado ou um procedimento externo.

function-name

Uma função (embutida, escalar, de origem, tabela ou função externa).

sequence-name

Uma sequência.

alias-name

Um pseudônimo. Sem modelo de destino do PostgreSQL; use com. StartMetadataModelExportAsScript Origin: SOURCE

mqtable-name

Uma tabela de consulta materializada (MQT). Nenhum modelo de destino do PostgreSQL.

type-name

Um tipo definido pelo usuário (tipo distinto ou tipo estruturado). Nenhum modelo de destino do PostgreSQL.

category-name

Uma classe de objeto. Use para atingir uma categoria inteira de objetos; consulteNomes de categorias por motor.

IBM Db2 LUW

Chave

Seleciona

server-name

O servidor.

schema-name

Um esquema.

table-name

Uma tabela ou uma exibição; use table-type para distinguir.

procedure-name

Um procedimento armazenado.

function-name

Uma função (função escalar, de origem ou de tabela).

sequence-name

Uma sequência.

module-name

Um módulo.

category-name

Uma classe de objeto. Use para atingir uma categoria inteira de objetos; consulteNomes de categorias por motor.

Nomes de categorias por motor

O category-name valor em uma regra de seleção tem como alvo uma classe de objeto inteira em vez de objetos individuais. Os nomes das categorias são específicos do mecanismo e diferenciam maiúsculas de minúsculas. A aceitação de uma operação category-name depende da operação — verifique a Referência da AWS API da operação que você está usando. As guias abaixo abrangem os mecanismos de origem e de destino.

Importante

Enviar um nome de categoria de um mecanismo para um projeto configurado para um mecanismo diferente retorna um erro.

SQL Server

Os nomes das categorias a seguir se aplicam às fontes do Microsoft SQL Server.

Valor do category-name

O que ele agrupa

Tables

Tabelas de base.

Views

Visualizações.

Procedures

Procedimentos armazenados.

SQL scalar functions

T-SQL Funções escalares.

SQL table-valued functions

Multi-statement funções com valor de tabela.

SQL inline functions

Funções embutidas com valor de tabela.

Aggregate functions

User-defined funções agregadas.

Synonyms

T-SQL sinônimos.

Sequences

Objetos de sequência.

Types

Coleções de esquemas XML e tipos de colunas.

Table types

Table-typed declarações de parâmetros.

User-Defined Types

Tipos de alias e CLR definidos pelo usuário.

XML Schema Collections

Coleções de esquemas XML.

Oracle

Os nomes das categorias a seguir se aplicam às fontes da Oracle.

Valor do category-name

O que ele agrupa

Tables

Mesas.

External Tables

Tabelas externas.

Views

Visualizações.

Packages

PL/SQL especificações e corpos da embalagem.

Procedures

Procedimentos armazenados.

Functions

Todas as funções do usuário, incluindo escalar e canalizada.

User Defined Types

Tipos de objetos.

Collection Types

Tipos VARRAY e tabela aninhada.

Sequences

Sequências.

Materialized Views

Visões materializadas.

Materialized View Logs

Materialized-view registros de alterações.

Synonyms

Sinônimos públicos e privados.

Clusters

Clusters de índice e hash.

Database Links

Links de banco de dados.

SAP ASE (Sybase ASE)

Os nomes das categorias a seguir se aplicam às fontes do SAP ASE (Sybase ASE).

Valor do category-name

O que ele agrupa

Tables

Tabelas de base.

Views

Visualizações.

Procedures

Procedimentos armazenados.

Scalar Functions

T-SQL Funções escalares.

Table Valued Functions

Table-valued funções.

Materialized Views

Visões materializadas.

User Defined Types

Tipos de aliases definidos pelo usuário.

Defaults

Objetos padrão vinculados. Describe-only; não pode ser convertido de forma independente.

PostgreSQL

Os nomes de categoria a seguir se aplicam aos destinos PostgreSQL e Aurora PostgreSQL.

Valor do category-name

O que ele agrupa

Tables

Tabelas de base.

Views

Visualizações.

Functions

Funções.

Procedures

Procedimentos armazenados.

Sequences

Sequências.

Materialized Views

Visões materializadas.

Types

User-defined tipos.

Domains

Domínios.

MySQL

Os nomes das categorias a seguir se aplicam aos destinos do MySQL e do Aurora MySQL.

Valor do category-name

O que ele agrupa

Tables

Tabelas de base.

Views

Visualizações.

Functions

Funções.

Procedures

Procedimentos armazenados.

Events

Eventos.

IBM Db2 for z/OS

Os seguintes nomes de categorias se aplicam ao IBM Db2 para z/OS fontes.

Valor do category-name

Chave localizadora

O que ele agrupa

Tables

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

Tabelas de base.

Global Temporary Tables

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

Tabelas temporárias globais. Nenhum modelo de destino do PostgreSQL.

Materialized Query Tables

mqtable-name

Tabelas de consulta materializadas (MQTs). Nenhum modelo de destino do PostgreSQL.

Views

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

Visualizações.

Aliases

alias-name

Pseudônimos. Nenhum modelo de destino do PostgreSQL.

Procedures

procedure-name

Procedimentos armazenados.

Functions

function-name

Todos os subtipos de função: escalar, tabela, embutida, originada.

Sequences

sequence-name

Sequências.

User Defined Types

type-name

Tipos distintos e tipos estruturados. Nenhum modelo de destino do PostgreSQL.

External Routines

function-name / procedure-name

Funções externas e procedimentos externos.

IBM Db2 LUW

Os nomes de categoria a seguir se aplicam aos destinos do IBM Db2 LUW.

Valor do category-name

O que ele agrupa

Tables

Tabelas de base.

Views

Visualizações.

Functions

Funções (escalares, de origem, tabela).

Procedures

Procedimentos armazenados.

Sequences

Sequências.

Modules

Módulos.

Exemplos de regras de seleção

Os exemplos a seguir mostram como criar regras de seleção para cenários comuns de migração. Cada exemplo usa o valor do --selection-rules parâmetro que você passaria para as operações da API de conversão de esquema do DMS, como StartMetadataModelConversion ou. StartMetadataModelAssessment

Selecione uma tabela específica para conversão de uma fonte do Microsoft SQL Server. O Microsoft SQL Server requerdatabase-name, além 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" } } ] }

Selecione todos os objetos em um esquema Oracle omitindo a chave no nível do objeto. O Oracle não tem database-name nível; o esquema é o contêiner superior abaixoserver-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" } } ] }

As visualizações do Oracle são tratadas usando table-name com"table-type": "view". Não há view-name chave 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" } } ] }

Selecione um procedimento armazenado específico de um IBM Db2 para z/OS origem. O IBM Db2 é z/OS usado procedure-name e vai diretamente de server-name para, schema-name sem nenhum database-name nível.

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

Selecione cada procedimento em um esquema SAP ASE (Sybase ASE) usando % como curinga para. procedure-name O SAP ASE (Sybase ASE) requer database-name entre server-name e. 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": "%" } } ] }

Use % para combinar várias tabelas por prefixo. Este exemplo seleciona todas as tabelas cujos nomes começam comFact_.

{ "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_%" } } ] }

Inclua todos os objetos em um esquema Oracle e, em seguida, exclua todas as tabelas cujos nomes comecem comTMP_. As regras são avaliadas em rule-id ordem; têm exclude precedência quando coincidem.

{ "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_%" } } ] }

Use várias explicit regras em um único documento para selecionar um conjunto específico de procedimentos por nome.

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

Use uma include regra para corresponder a cada procedimento cujo nome comece com ePROC_, em seguida, uma exclude regra para PROC_TEST remover desse conjunto. Uma exclude regra deve seguir uma include regra; uma regra autônoma não exclude tem efeito.

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