Przeprowadzamy migrację naszej bazy danych do nowego schematu, ale chcemy zweryfikować poprawność przeniesienia danych.
Tradycyjne narzędzia do porównywania danych mogą porównywać dwie bazy danych pod kątem różnic, jeśli schematy są takie same. W naszym przypadku nastąpiły zmiany w projektach tabel, ale wszystkie dane ze starego schematu znajdują się w nowym, po prostu zostały nieco przeniesione i muszę się upewnić, że są poprawne. Mamy dziesiątki milionów rzędów, więc ręczna kontrola nie jest opcją.
Czy są jakieś narzędzia, które mogłyby pomóc w tego rodzaju porównaniu?
Jeśli nie, czy są jakieś biblioteki / frameworki, które mogłyby pomóc w rozpoczęciu tworzenia niestandardowego rozwiązania?
W razie potrzeby chętnie skorzystam z rozwiązania specyficznego dla bazy danych, w tym przypadku dla SQL Server 2008.
Moje rozwiązanie: porównuję dwa zestawy danych, tworząc VIEW
każdą tabelę w starej bazie danych z tymi samymi polami, co nowa tabela bazy danych.
Następnie porównuję dane przy użyciu opisanej tutaj techniki: Najkrótszy, najszybszy i najłatwiejszy sposób porównania dwóch tabel w SQL Server: UNION!
Mam szczęście w tej migracji, ponieważ ogólna struktura tabeli jest podobna do starej bazy danych, a pola są przenoszone z jednej tabeli do drugiej, upuszczane lub dodawane. W przypadku upuszczonych i dodanych nie ma nic do porównania, dla pól, które zostały przeniesione lub zostały zagregowane, wykonuję obliczenia w celu zapewnienia poprawnych informacji do porównania.
Do UNION
porównania pokazuje mi tylko wiersze z różnic, tak szybko, jak dane są poprawne dostaję pusty zestaw wyników.
Odpowiedzi:
Nie jest niemożliwe porównanie dwóch różnych schematów, jest to obliczenie tego, jak pewny jesteś w wyniku. Zasadniczo pożyczyłem od technik uzgadniania banku
Ważne: to uzgodnienie nie polega na upewnieniu się, że miejsce docelowe dokładnie pasuje do źródła w kontekście danych (istnieje powód migracji do nowego systemu), ale musisz wyjaśnić wszelkie rozbieżności!
Podstawa:
Generalnie podzieliłem porównanie na kilka metod (w szczególności dla szczegółowych danych):
Techniki:
Bez względu na to, jakiej metody użyłem do stworzenia tego, co zostanie porównane, otrzymam zestaw plików / widoków / dbs, które przechowują dane źródłowe i docelowe do uzgodnienia, a następnie w zależności od nośnika mogę użyć jednego z powszechnie dostępnych narzędzi aby je porównać. Moje własne preferencje to:
Porównanie plików
Utwórz dwa różne foldery dla SourceDB i DestinationDB (wytłoczony czas / wersja, więc wiem, kiedy dokonałem uzgodnienia) i zrzuć dane wyjściowe moich danych jako pliki o odpowiednich nazwach, a następnie użyj narzędzia porównawczego (takiego jak CSDiff ), aby zidentyfikować różnice
Porównanie Excela
W szczególności w przypadku raportów zarządzania utworzę zestaw Excela skoroszytów do porównania raportów (w istocie przy użyciu VLookupów i porównywania sum)
Porównanie danych
Zamiast wyprowadzać dane uzgadniania do plików lub raportów, wysyłaj je do oddzielnych baz danych, a następnie użyj czegoś takiego jak Redgate SQL Data Compare, aby porównać bazy danych
Inne narzędzia:
Nie wypróbowałem żadnego z nich, ale szybkie wyszukiwanie w Google w „Narzędziach do uzgadniania danych” daje:
Są inne, ale te wyglądały rozsądnie
źródło
Jeśli chcesz porównać dane w dwóch różnych projektach baz danych, będziesz musiał napisać ręcznie kodowany SQL, aby porównać dane.
Nie ma biblioteki frameworka do sprawdzania danych w dwóch różnych bazach danych.
Tylko Ty wiesz, co zmieniłeś lub zmodyfikowałeś
źródło
Porównywanie różnych schematów będzie niemożliwe. Aby rozwiązać problem, ustalę, jakie dane należy porównać. Następnie stworzyłem widok na każdym serwerze, który wycofałby dane, które chciałem porównać (biorąc pod uwagę typy danych i tym podobne).
Gdy oba widoki będą takie same, skorzystam z narzędzia innej firmy, takiego jak Red Gate Data Compare, aby zobaczyć, które wiersze są różne.
Brzmi jak ból. Powodzenia!
źródło
Kilka lat temu napisałem narzędzie, które właśnie to robi - porównanie danych między dwiema bazami danych. Od tego czasu przekonwertowałem go na oprogramowanie komercyjne i opublikowałem pod adresem
www.sql-server-tool.com
Program o nazwie SCT dla „SQL Server Compare Tool” (nigdy nie byłem dobry w nazywaniu rzeczy :) - ma wiele opcji dostrajających, takich jak: ignorowanie wybranych kolumn lub określanie metody porównania (rekord po rekordzie lub klucz podstawowy / porównanie indeksu). Porównanie „sesji” można zapisać i odtworzyć później bez konieczności ponownego wprowadzania parametrów. Parametru wiersza polecenia można użyć do pełnej automatyzacji porównań.
W przypadku dziesiątek milionów wierszy może to być nieco powolne - w takim przypadku zaleciłbym rozpoczęcie od mniejszego podzbioru danych - powiedzmy, porównajmy tylko pierwsze 1000 wierszy - i zobaczmy, czy konieczne jest jakiekolwiek dostrajanie procesu.
Dariusz Dziewialtowski-Gintowt
źródło