---
title: Mapowanie baz danych z obsługą wyjątków
date: 2019-06-05
categories:
  - data-integration
  - database
  - database-mapping
tags:
  - data-mapping
  - database-exception-handling
  - database-mapping
  - mapforce
description: Altova MapForce zawiera mechanizmy obsługi wyjątków baz danych, które umożliwiają cofnięcie zmian w przypadku wystąpienia problemów oraz, opcjonalnie, kontynuowanie przetwarzania pozostałych danych w mapowaniu bazy danych.
---
Status: #blog

Tags:  #data-mapping #database-exception-handling #database-mapping #mapforce

Categories: [data-integration](/blog/pl/category/data-integration.md) | [database + sql](/blog/pl/category/database-sql.md) | [data-integration](/blog/pl/category/data-integration.md)
# Mapowanie baz danych z obsługą wyjątków

Kluczowe procesy biznesowe zależą od wiarygodnych danych, a administratorzy baz danych oraz inni analitycy danych muszą mieć pewność co do integralności informacji przechowywanych w tabelach baz danych. Podczas automatycznych operacji ETL (ekstrakcja, transformacja, ładowanie) lub innych zadań importu danych, mogą wystąpić nieprawidłowe dane, które zagrażają powodzeniu procesu. Altova MapForce oferuje mechanizmy obsługi wyjątków w bazach danych, które pozwalają na cofnięcie zmienionych danych w przypadku wystąpienia błędu oraz, opcjonalnie, kontynuowanie przetwarzania pozostałych danych w bazie.

Na przykład, błąd w pojedynczym rekordzie nie musi uniemożliwiać dalszego działania procesu mapowania. Może się to zdarzyć, gdy pewne ograniczenia bazy danych uniemożliwiają zapisywanie lub aktualizowanie nieprawidłowych danych.

![](/blog/images/container_ship5.jpg)

<!--more-->

Włączenie obsługi wyjątków w bazie danych obejmuje wszystkie zmiany w komponentach bazy danych w transakcjach, które można wycofać w przypadku wystąpienia błędu. Użytkownicy mogą zdecydować, czy kontynuować proces mapowania, czy też przerwać dalsze wykonywanie. Transakcje można włączyć na poziomie komponentu bazy danych, na poziomie tabeli lub dla procedur składowanych.

Obsługa wyjątków może być nawet połączona z rejestrowaniem (śledzeniem) danych wyjściowych z bazy danych, co pozwala na stworzenie rejestru błędów występujących podczas automatycznego przetwarzania.

Sprawdźmy, jak to działa.

Folder z przykładami MapForce zawiera mapowanie bazy danych oraz bazę danych SQLite, które ilustrują obsługę transakcji i możliwość ich wycofywania. Oczywiście, te funkcje są obsługiwane dla [wszystkich popularnych relacyjnych baz danych](https://www.altova.com/pl/mapforce#db_mapping), a służą do realizacji typowych zadań, takich jak [konwersja z PostgreSQL do SQLite](https://www.altova.com/pl/mapforce/convert-mysql), mapowanie XML na SQL Server, konwersja JSON na Access i tak dalej.

[![Przykład mapowania danych, który ilustruje obsługę wyjątków w bazie danych](/blog/images/database-mapping-1.png)](database-mapping-1.png)

To mapowanie kopiuje dane z dwóch tabel baz danych do nowych tabel o podobnej strukturze, z wyjątkiem jednej istotnej różnicy. W tabeli "new_addresses" w docelowej bazie danych, pola "is_shipping" i "is_billing" nie mogą zawierać wartości null, podczas gdy w tabeli "addresses" w źródłowej bazie danych dopuszczalne były wartości null. Oznacza to, że podczas wykonywania mapowania mogą wystąpić błędy, jeśli napotkane zostaną brakujące wartości.

Przyjrzymy się trzem sytuacjom, w których wykorzystamy różne opcje obsługi wyjątków w bazie danych, aby radzić sobie z błędami na różne sposoby

- W przypadku wystąpienia pierwszego błędu, przywróć wszystkie zmiany i zatrzymaj proces mapowania

- Wycofaj tylko transakcję, która spowodowała błąd, i kontynuuj

- Cofnij ostatnią transakcję i kontynuuj

### Przywróć wszystkie zmiany

W pierwszej sytuacji, chcemy zastosować mechanizm obsługi wyjątków w bazie danych, aby w przypadku wystąpienia jakiegokolwiek błędu podczas procesu mapowania, baza danych docelowa pozostała całkowicie niezmieniona. Aby zaimplementować tę opcję, możemy otworzyć okno dialogowe "Właściwości" dla komponentu bazy danych docelowej i włączyć obsługę transakcji:

[![Przykład konfiguracji transakcji dla obsługi wyjątków w bazie danych](/blog/images/transaction-setting-1.png)](transaction-setting-1.png)

Teraz możemy wykonać mapowanie, klikając przycisk "Wyjście" znajdujący się na dole panelu mapowania, aby wygenerować skrypt SQL. Następnie, z menu "Wyjście" znajdującego się nad oknem skryptu, wybierz opcję "Uruchom skrypt SQL"

[![Przykładowy skrypt SQL do obsługi wyjątków w bazie danych](/blog/images/run-SQL-script-1.png)](run-SQL-script-1.png)

Podczas wykonywania, jeśli wystąpi pierwszy błąd, wyświetlany jest komunikat, który pozwala nam potwierdzić lub zmienić ustawienia transakcji, które wybraliśmy wcześniej

[![Potwierdzanie ustawień transakcji dotyczących obsługi wyjątków w bazie danych](/blog/images/error-message-1.png)](error-message-1.png)

Po prostu klikniemy przycisk OK, aby potwierdzić nasze początkowe ustawienia. Proces mapowania zostanie zatrzymany, a okno "Wiadomości" wyświetli opis błędu:

[![Okno wiadomości wyświetla pierwszy błąd, który wystąpił podczas obsługi wyjątków w bazie danych](/blog/images/Messages-1.png)](Messages-1.png)

Możemy użyć wbudowanego okna MapForce DB Query, aby przeglądać tabele "new_users" i "new_addresses". Oczekujemy, że obie te tabele będą puste:

[![Zapytanie do bazy danych weryfikuje możliwość wycofania transakcji](/blog/images/db-query-1.png)](db-query-1.png)

To potwierdza, że wszelkie dane wprowadzone przed wystąpieniem błędu zostały cofnięte, czyli usunięte z bazy danych.

Podczas automatycznego działania, kontrolowanego przez serwer MapForce, ustawienia transakcji komponentu będą wykorzystywane bez żadnych przerw.

### Wycofaj ostatnią transakcję i kontynuuj

Wyobraźmy sobie sytuację, w której konieczne jest zaimportowanie do bazy danych duży plik zawierający dane zewnętrzne, powiedzmy dziesięć tysięcy rekordów lub więcej. Zakładamy, że plik zewnętrzny jest poprawny, ale jeśli kilka rekordów zawiera błędne dane, chcemy zaimportować wszystkie poprawne rekordy i jednocześnie udokumentować błędy. Jest to sytuacja związana z obsługą wyjątków w bazie danych, opisana jako sytuacja numer 2 w powyższej liście, w połączeniu z [mechanizmem śledzenia działania bazy danych, opisanym we wcześniejszym wpisie](https://www.altova.com/blog/database-tracing/).

Aby włączyć tę opcję obsługi wyjątków dla tabeli "new_addresses", klikamy przycisk akcji dla tej tabeli i wybieramy następujące właściwości:

[![Ustawienia transakcji dla przykładu obsługi wyjątków w bazie danych](/blog/images/table-actions-2.png)](table-actions-2.png)

Teraz możemy wygenerować nowy skrypt SQL i uruchomić go, korzystając z tego samego polecenia "Uruchom skrypt SQL", o którym wspomniano wcześniej. Okno "Wiadomości" wyświetli kilka błędów. Możemy ponownie uruchomić zapytanie SQL w oknie "Zapytanie do bazy danych", aby zobaczyć dane, które zostały poprawnie zmapowane:

[![Zapytanie SQL i wyniki ilustrujące przykład obsługi wyjątków w bazie danych, obejmujący operacje cofnięcia i kontynuacji](/blog/images/db-query-2.png)](db-query-2.png)

Dodatkowo, wygenerowaliśmy plik śledzenia w formacie XML. Poniższy obrazek przedstawia fragment widoku w oknie edytora XML XMLSpy [do edycji plików XML](https://www.altova.com/pl/xmlspy-xml-editor) dla jednego błędu, wyróżnionego na linii 54:

[![Rejestrowanie błędów w plikach podczas obsługi wyjątków w bazie danych](/blog/images/trace-file.png)](trace-file.png)

Taki plik śledzenia ułatwia znalezienie i naprawienie nawet kilku błędnych rekordów spośród dziesięciu tysięcy!

### Wycofaj ostatnią transakcję i kontynuuj

Sytuacja 3 związana z obsługą wyjątków w bazie danych spełnia to wymaganie biznesowe: jeśli nie można dodać adresu, to również rekord użytkownika nadrzędnego nie powinien zostać dodany, ale pozostała część procesu mapowania powinna zostać kontynuowana.

Ten przykład jest szczegółowo opisany w instrukcji MapForce Online, która jest automatycznie instalowana wraz z programem MapForce, oraz we wszystkich plikach demonstracyjnych prezentowanych tutaj. Zachęcamy do [pobrania bezpłatnej wersji próbnej](https://www.altova.com/pl/download) i zapoznania się z tym przykładem, lub od razu przystąpić do implementacji obsługi wyjątków w bazach danych w swoich własnych mapowaniach!
