---
title: Mapeamento de bases de dados com tratamento de exceções
date: 2019-06-05
categories:
  - data-integration
  - database
  - database-mapping
tags:
  - data-mapping
  - database-exception-handling
  - database-mapping
  - mapforce
description: O Altova MapForce inclui mecanismos de tratamento de exceções de base de dados para reverter as alterações nos dados afetados e, opcionalmente, continuar o mapeamento do restante da base de dados.
---
Status: #blog

Tags:  #data-mapping #database-exception-handling #database-mapping #mapforce

Categories: [data-integration](/blog/pt/category/data-integration.md) | [database + sql](/blog/pt/category/database-sql.md) | [data-integration](/blog/pt/category/data-integration.md)
# Mapeamento de bases de dados com tratamento de exceções

Processos empresariais críticos dependem de dados fiáveis, e os administradores de bases de dados, bem como outros analistas de dados, precisam ter a certeza da integridade das informações armazenadas nas tabelas de bases de dados. Durante operações automatizadas de ETL (Extração, Transformação e Carregamento) ou outras tarefas de importação de bases de dados, podem ser encontrados dados inválidos que comprometem o sucesso do processo. O Altova MapForce inclui mecanismos de tratamento de exceções de bases de dados para reverter os dados afetados quando ocorre um erro, e permite, opcionalmente, continuar com o restante do mapeamento da base de dados.

Por exemplo, um erro num único registo não precisa de impedir a continuação da execução de um mapeamento, como acontece quando certas restrições de base de dados impedem que o mapeamento insira ou atualize dados inválidos.

![](/blog/images/container_ship5.jpg)

<!--more-->

A ativação do tratamento de exceções no nível do banco de dados envolve a inclusão de todas as alterações no componente do banco de dados dentro de transações que podem ser revertidas em caso de erro. Os utilizadores podem optar por continuar com o restante do processo ou interromper a execução. As transações podem ser ativadas a nível do componente do banco de dados, a nível da tabela ou para procedimentos armazenados.

O tratamento de exceções pode ser combinado com a registação (monitorização) da saída da base de dados para criar um registo dos erros que ocorrem durante o processamento automatizado.

Vamos ver como funciona.

A pasta de exemplos do MapForce inclui um mapeamento de base de dados e uma base de dados SQLite que ilustram o tratamento de transações e a reversão de operações. Naturalmente, estas funcionalidades são suportadas para [todas as bases de dados relacionais populares](https://www.altova.com/pt/mapforce#db_mapping), para tarefas comuns como [a conversão de PostgreSQL para SQLite](https://www.altova.com/pt/mapforce/convert-mysql), o mapeamento de XML para um SQL Server, a conversão de JSON para Access, e assim por diante.

[![Exemplo de mapeamento de dados para ilustrar o tratamento de exceções em bases de dados](/blog/images/database-mapping-1.png)](database-mapping-1.png)

Esta correspondência copia dados de duas tabelas de base de dados para novas tabelas com uma estrutura semelhante, exceto por uma diferença importante. Na tabela "new_addresses" da base de dados de destino, os campos "is_shipping" e "is_billing" não podem conter valores nulos, enquanto que, na tabela "addresses" da base de dados de origem, esses campos podiam conter valores nulos. Isso significa que ocorrerão erros durante a execução da correspondência se forem encontrados valores ausentes.

Vamos analisar três situações, utilizando as opções de tratamento de exceções de bases de dados para gerir erros de diferentes formas

- No primeiro erro, reverta todas as alterações e interrompa a execução do processo

- Desfaça apenas a transação que gerou o erro e continue

- Desfazer a última transação e continuar

### Desfazer todas as alterações

Na primeira situação, pretendemos aplicar o tratamento de exceções no nível do banco de dados para garantir que o banco de dados de destino permaneça completamente inalterado caso ocorra algum erro durante a execução da mapeamento. Para implementar esta opção, podemos abrir a caixa de diálogo de propriedades do componente do banco de dados de destino e ativar o tratamento de transações:

[![Exemplo de configuração de transação para tratamento de exceções no banco de dados](/blog/images/transaction-setting-1.png)](transaction-setting-1.png)

Agora, podemos executar a configuração clicando no botão "Saída" na parte inferior do painel de configuração para gerar o script de execução SQL. Em seguida, selecione a opção "Executar script SQL" no menu "Saída" que se encontra acima da janela do script

[![Exemplo de script SQL para tratamento de exceções no banco de dados](/blog/images/run-SQL-script-1.png)](run-SQL-script-1.png)

Quando ocorre o primeiro erro durante a execução, é exibida uma janela de diálogo que nos permite confirmar ou alterar as configurações da transação que escolhemos anteriormente

[![Confirmar as configurações da transação para o tratamento de exceções no banco de dados](/blog/images/error-message-1.png)](error-message-1.png)

Simplesmente clicaremos em "OK" para confirmar as configurações originais. A execução da mapeação é interrompida e a janela de mensagens descreve o erro:

[![A janela de mensagens exibe o primeiro erro detetado durante o tratamento de exceções na base de dados](/blog/images/Messages-1.png)](Messages-1.png)

Podemos usar a janela de consulta de base de dados integrada do MapForce para selecionar e examinar as tabelas "new_users" e "new_addresses". Esperamos que ambas estejam vazias:

[![Uma consulta à base de dados verifica se a transação foi revertida](/blog/images/db-query-1.png)](db-query-1.png)

Isto confirma que quaisquer dados inseridos antes do erro foram revertidos, ou seja, removidos da base de dados.

Durante a execução automatizada, sob o controlo do MapForce Server, as configurações de transação do componente seriam utilizadas sem qualquer interrupção.

### Desfazer a última transação e continuar

Imagine um cenário em que um ficheiro de dados externo muito grande precisa de ser importado para uma base de dados, digamos, dez mil registos ou mais. Esperamos que o ficheiro externo seja válido, mas, caso alguns registos contenham dados incorretos, queremos importar todos os registos válidos e documentar os erros. Esta é uma situação de tratamento de exceções na base de dados, correspondente ao cenário 2 da lista acima, combinada com o [rastreamento da base de dados descrito numa publicação anterior](https://www.altova.com/blog/database-tracing/).

Para implementar esta opção de tratamento de exceções para a tabela "new_addresses", clicamos no botão de ações da tabela e selecionamos as seguintes propriedades:

[![Configurações de transação para um exemplo de tratamento de exceções na base de dados](/blog/images/table-actions-2.png)](table-actions-2.png)

Agora podemos gerar um novo script SQL e executá-lo utilizando o mesmo comando "Executar script SQL" mostrado acima. A janela "Mensagens" irá registar vários erros. Podemos executar novamente a consulta SQL na janela "Consulta de Base de Dados" para visualizar os dados que foram mapeados com sucesso:

[![Consulta SQL e resultados para um exemplo de tratamento de exceções de base de dados que envolve a reversão e a continuação](/blog/images/db-query-2.png)](db-query-2.png)

Além disso, gerámos um ficheiro de rastreio em formato XML. A imagem abaixo mostra uma visão parcial na janela do editor XML do programa XMLSpy [XML](https://www.altova.com/pt/xmlspy-xml-editor), referente a um erro específico, destacado na linha 54:

[![Registar erros nos ficheiros de registo durante o tratamento de exceções na base de dados](/blog/images/trace-file.png)](trace-file.png)

Um ficheiro de registo como este facilita a identificação e correção de alguns registos incorretos entre dez mil!

### Desfazer a última transação e continuar

A situação 3 no tratamento de exceções da base de dados satisfaz este requisito empresarial: se a inserção de um endereço falhar, o registo do utilizador correspondente também não deve ser inserido, mas o restante do processo de mapeamento deve continuar.

Este exemplo é descrito em detalhe na ajuda online do MapForce, que é instalada automaticamente com o programa, e em todos os ficheiros de demonstração apresentados aqui. Deixamos que seja o utilizador a [descarregar uma versão de avaliação gratuita](https://www.altova.com/pt/download) e a explorar esse cenário, ou que comece imediatamente a implementar o tratamento de exceções de bases de dados nas suas próprias mapeações!
