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 transformação e ações
As ações de transformação são utilizadas para especificar as transformações que você deseja aplicar ao esquema, à tabela ou à visualização selecionada. As regras da transformação são opcionais.
Limitações
Não é possível aplicar mais de uma ação de regra de transformação ao mesmo objeto (esquema, tabela, coluna, espaço para tabela de tabela ou espaço para tabela de índice). É possível aplicar várias ações de regra de transformação em qualquer nível, desde que cada ação de transformação seja aplicada em um objeto diferente.
Os nomes de tabelas e de colunas nas regras de transformação diferenciam maiúsculas de minúsculas. Por exemplo, você deve fornecer nomes de tabelas e nomes de colunas para um banco de dados Oracle ou Db2 em letras maiúsculas.
As transformações não são compatíveis com nomes de colunas com idiomas da direita para a esquerda.
As transformações não podem ser executadas em colunas que contenham caracteres especiais (por exemplo, #, \, /, -) em seu nome.
A única transformação compatível com colunas mapeadas para tipos de dados BLOB/CLOB é descartar a coluna no destino.
AWS DMS não oferece suporte à replicação de duas tabelas de origem em uma única tabela de destino. AWS DMS replica registros de tabela em tabela e de coluna em coluna, de acordo com as regras de transformação da tarefa de replicação. Os nomes dos objetos devem ser exclusivos para evitar sobreposição.
Por exemplo, uma tabela de origem tem uma coluna chamada
ID
e a tabela de destino correspondente tem uma coluna preexistente chamadaid
. Se uma regra utilizar uma instruçãoADD-COLUMN
para adicionar uma nova coluna chamadaid
, e uma instrução SQLite para preencher a coluna com valores personalizados, isso criará um objeto duplicado e ambíguo chamadoid
e não é compatível.Ao criar uma regra de transformação, recomendamos usar o
data-type
parâmetro somente quando as regras de seleçãocolumn-name
especificarem várias colunas, por exemplo, quando você define como%
. Não recomendamos o usodata-type
para selecionar uma única coluna.
Valores
Os seguintes valores podem ser aplicados a regras de mapeamento de tabela que utilizam o tipo de regra de transformação
Parâmetro | Possíveis valores | Descrição |
---|---|---|
rule-type |
transformation |
Um valor que aplica a regra a cada objeto especificado pela regra de seleção. Utilize transformation a menos que especificado de outra forma. |
rule-id |
Um valor numérico. | Um valor numérico exclusivo para identificar a regra. Se você especificar várias regras de transformação para o mesmo objeto (esquema, tabela, coluna, espaço entre tabelas ou espaço de tabela de índice), AWS DMS aplique a regra de transformação com o ID de regra inferior. |
rule-name |
Um valor alfanumérico. | Um nome exclusivo para identificar a regra. |
object-locator |
Um objeto com os seguintes parâmetros:
|
O nome de cada esquema, tabela ou visualização, espaço de tabela de tabela, espaço de tabela de índice e coluna aos quais a regra se aplica. É possível utilizar o sinal de porcentagem "%" como um curinga para todo ou parte do valor de cada parâmetro
Além disso, o parâmetro
|
rule-action |
|
A transformação que você quer aplicar ao objeto. Todas as ações de regra de transformação diferenciam maiúsculas e minúsculas. O valor de Quando utilizado com os parâmetros O valor de O valor Não é possível utilizar uma regra Para uma tarefa existente, as ações da regra de transformação que alteram o esquema da tabela de destino, como |
rule-target |
schema , table ,
column , table-tablespace ,
index-tablespace |
O tipo de objeto que você está transformando. Os valores Especifique um valor para o parâmetro especificado como parte do |
value |
Um valor alfanumérico que segue as regras de nomenclatura do tipo de destino. | O novo valor de ações que exigem entrada, como rename . |
old-value |
Um valor alfanumérico que segue as regras de nomenclatura do tipo de destino. | O antigo valor de ações que exigem substituição, como replace-prefix . |
data-type |
Ou, o nome do tipo de dados de substituição quando AWS DMS suporta transformações de tipo de dados de coluna para os seguintes tipos de dados do DMS:
|
Veja a seguir um exemplo de um parâmetro
Aqui, a coluna |
expression |
Um valor alfanumérico que segue a sintaxe SQLite. |
Quando utilizado com a Quando utilizado com a Observe que somente expressões são compatíveis com esse parâmetro. Os operadores e os comandos são incompatíveis. Para obter mais informações sobre como utilizar expressões para regras de transformação, consulte Utilizar expressões de regra de transformação para definir o conteúdo da coluna. Para obter mais informações sobre expressões SQLite, consulte Utilizar perfis do SQLite para criar expressões. |
primary-key-def |
Um objeto com os seguintes parâmetros:
|
Esse parâmetro pode definir o nome, o tipo e o conteúdo de uma chave exclusiva na tabela ou visualização transformada. Ele faz isso quando a rule-action é definida como define-primary-key e o rule-target é definido como table . Por padrão, a chave exclusiva é definida como uma chave primária. |
before-image-def |
Um objeto com os seguintes parâmetros:
|
Esse parâmetro define uma convenção de nomenclatura para identificar as colunas de imagem anterior e especifica um filtro para identificar quais colunas de origem podem ter colunas de imagem anterior criadas para elas no destino. É possível especificar esse parâmetro quando a Não defina Para
Para obter mais informações sobre suporte a imagem anterior para endpoints de destino do AWS DMS , consulte: |
Exemplos
exemplo Renomear um esquema
O exemplo a seguir renomeia um esquema de Test
na origem para Test1
no 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" } ] }
exemplo Renomeação de uma tabela
O exemplo a seguir renomeia uma tabela de Actor
na origem para Actor1
no 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" } ] }
exemplo Renomeação de uma coluna
O exemplo a seguir renomeia uma coluna na tabela Actor
de first_name
na origem para fname
no 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" } ] }
exemplo Renomear um espaço de tabela da tabela do Oracle
O exemplo a seguir renomeia o espaço de tabela denominado SetSpace
para uma tabela denominada Actor
na origem do Oracle para SceneTblSpace
no endpoint de destino do 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" } ] }
exemplo Renomear um espaço de tabela de índice do Oracle
O exemplo a seguir renomeia o espaço de tabela de índice denominado SetISpace
para uma tabela denominada Actor
na origem do Oracle para SceneIdxSpace
no endpoint de destino do 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" } ] }
exemplo Adicionar uma coluna
O exemplo a seguir adiciona uma coluna datetime
à tabela Actor
no 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 } } ] }
exemplo Remover uma coluna
O exemplo a seguir transforma a tabela Actor
na origem para remover todas as colunas que começam com os caracteres col
no 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%" } }] }
exemplo Converter para minúsculas
O exemplo a seguir converte o nome de uma tabela de ACTOR
na origem em actor
no 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" } }] }
exemplo Converter em maiúsculas
O exemplo a seguir converte todas as colunas em todas as tabelas e todos os esquemas de minúsculas, na origem, para maiúsculas, no 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": "%" } } ] }
exemplo Adicionar um prefixo
O exemplo a seguir transforma todas as tabelas na origem para adicionar o prefixo DMS_
a elas no 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_" }] }
exemplo Substituir um prefixo
O exemplo a seguir transforma todas as colunas contendo o prefixo Pre_
na origem para substituí-lo por NewPre_
no 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_" } ] }
exemplo Remover um sufixo
O exemplo a seguir transforma todas as tabelas na origem para remover o sufixo _DMS
delas no 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" }] }
exemplo Definir uma chave primária
O exemplo a seguir define uma chave primária denominada ITEM-primary-key
em três colunas da tabela ITEM
migradas para o endpoint 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" ] } }] }
exemplo Definir um índice exclusivo
O exemplo a seguir define um índice exclusivo denominado ITEM-unique-idx
em três colunas da tabela ITEM
migradas para o endpoint 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" ] } }] }
exemplo Alterar o tipo de dados da coluna de destino
O exemplo a seguir altera o tipo de dados de uma coluna de destino chamada SALE_AMOUNT
de um tipo de dados existente para 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" } }
exemplo Adicionar uma coluna de imagem anterior
Para uma coluna de origem chamada emp_no
, a regra de transformação no exemplo a seguir adiciona uma nova coluna chamada BI_emp_no
no 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" } } ] }
Aqui, a instrução a seguir preenche uma coluna BI_emp_no
na linha correspondente com 1.
UPDATE employees SET emp_no = 3 WHERE BI_emp_no = 1;
Ao escrever atualizações do CDC em AWS DMS destinos compatíveis, a BI_emp_no
coluna possibilita saber quais linhas têm valores atualizados na emp_no
coluna.