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-nameEsses mecanismos têm umdatabase-namení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êmdatabase-namení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 for
arn: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 |
|---|---|---|
|
Seleciona todos os objetos cujos nomes correspondem ao padrão. Suporta |
Use para combinar um grupo de objetos com um padrão de nomenclatura compartilhado. |
|
Remove objetos do conjunto já selecionado pelas |
Use para extrair exceções de uma mais ampla. |
|
Seleciona exatamente o objeto nomeado. Cada valor do localizador, incluindo |
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.
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.
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" } } ] }