---
title: Mapowanie danych dla obiektów binarnych – część 2
date: 2020-10-30
categories:
  - data-integration
  - database-mapping
  - sql
  - tools
tags:
  - binary-objects
  - data-mapping
  - mapforce
description: Mapowanie danych binarnych w celu wyodrębnienia danych binarnych z bazy danych i zapisania ich w formie czytelnej, zachowując wierność oryginalnym danym.
---
Status: #blog

Tags:  #binary-objects #data-mapping #mapforce

Categories: [data-integration](/blog/pl/category/data-integration.md) | [database + sql](/blog/pl/category/database-sql.md) 
# Mapowanie danych dla obiektów binarnych – część 2

Obiekty binarne – BLOB-y – mogą być trudne w zarządzaniu w bazach danych. W poprzednim artykule opisaliśmy sposób mapowania danych w MapForce, który umożliwia [wstawianie obiektów binarnych do bazy danych](https://www.altova.com/blog/) wraz z generowanymi metadanymi, które pozwalają na późniejszą identyfikację BLOB-ów. Kolejnym wyzwaniem w mapowaniu danych binarnych jest wyodrębnienie danych binarnych i zapisanie ich w formie, która jest zrozumiała i wierna oryginalnym danym.

Spójrzmy, jak to się robi.

![](/blog/images/blob-extraction.png)

<!--more-->

Wbudowana funkcja MapForce o nazwie "write-binary-file" służy do wyodrębniania danych typu BLOB z bazy danych i zapisywania ich do plików. Rozbudujemy przykład w dokumentacji online MapForce, aby stworzyć uzupełnienie wcześniejszego artykułu. Nasza zaktualizowana konfiguracja wykorzystuje parametry przekazywane w czasie działania, aby wyodrębnić jeden lub więcej obiektów binarnych z bazy danych.

Przykładowe zastosowanie oryginalnego wpisu dotyczyło bazy danych SQLite, która służyła do śledzenia różnych plików binarnych zawierających zasoby związane z produktami, wykorzystywanych przez dział marketingu. Dane binarne mogą obejmować pliki graficzne z logo, pliki PDF zawierające specyfikacje produktów, zrzuty ekranu prezentujące produkt w działaniu, zdjęcia, pliki wideo itp. Nasza tabela bazy danych zawiera metadane dotyczące produktu, typu zasobu oraz oryginalnej nazwy każdego pliku.

Rozpoczynamy mapowanie danych obiektów binarnych w celu ich wyodrębnienia, importując bazę danych do nowej konfiguracji mapowania. Tym razem, zamiast wybierać tabelę do mapowania, utworzymy zapytanie SQL SELECT z parametrami, które pozwolą na filtrowanie wyników na podstawie pól metadanych dotyczących typu produktu i zasobu. Instrukcja SELECT zwróci jeden lub więcej obiektów BLOB oraz ich oryginalne nazwy plików.

[![Tworzenie zapytania SELECT z parametrami w celu pobrania danych typu BLOB](/blog/images/create-query.png)](create-query.png)

Następnie klikamy polecenie SELECT w panelu mapowania, aby wyświetlić parametry, które można zmapować

[![Dodawanie zapytania z parametrami do mapowania danych](/blog/images/insert-call.png)](insert-call.png)

Teraz każdy pojedynczy parametr i wynik jest dostępny

[![Wyświetlanie instrukcji SELECT wraz ze wszystkimi parametrami i wynikami](/blog/images/mapping-2-1.png)](mapping-2-1.png)

Korzystając z opcji "Wstaw pole wejściowe" dostępnej w głównym menu "Wstaw" lub za pomocą odpowiedniego przycisku na pasku narzędzi, możemy wstawić specjalne pole do testowania podczas projektowania. Później, podczas automatycznego wykonywania, możemy wprowadzić nowe wartości parametrów, aby zastąpić wartości domyślne.

[![Dodawanie wartości domyślnych dla parametrów zapytania](/blog/images/create-input.png)](create-input.png)

Można zdefiniować wartość domyślną w oknie dialogowym definicji pola, ale ja preferuję określać ją jako stałą tekstową, jak pokazano powyżej. Wartość domyślna jest widoczna bez konieczności otwierania okna dialogowego, a zmiana jej wartości w celach testowych jest szybsza.

Będziemy postępować zgodnie z instrukcją obsługi MapForce [Przykład mapowania danych dla obiektów binarnych](https://www.altova.com/manual/Mapforce/mapforceenterprise/mff_binary_example_write.html) aby utworzyć mapowanie dla wyniku zapytania SELECT. Poniżej znajduje się kompletne mapowanie:

[![Pełny przykład mapowania danych binarnych w celu ich wyodrębnienia z bazy danych](/blog/images/mapping-3.png)](mapping-3.png)

Funkcja "write-binary-file" (zapis do pliku binarnego), wyróżniona w dokumentacji, zapisuje zawartość obiektu binarnego z bazy danych do pliku, którego ścieżka jest podana jako argument.

Udoskonaliliśmy przykładowe odwzorowanie, wprowadzając dwa ulepszenia. W pierwotnym przykładzie użyto stałej wartości tekstowej jako nazwy pliku obiektu binarnego, natomiast my odwzorowaliśmy oryginalną nazwę pliku z bazy danych. Dodatkowo, dodaliśmy kolejny obiekt wejściowy o nazwie "userPath", który służy do połączenia ścieżki do folderu i nazwy pliku.

W tym momencie możemy przetestować konfigurację, klikając przycisk "Wyjście" znajdujący się na dole panelu projektowania mapowania. Program MapForce wykonuje zapytanie z wykorzystaniem parametrów zdefiniowanych w konfiguracji, a okno "Wyjście" się otwiera:

[![Komunikat informujący o pomyślnym wyodrębnieniu danych typu BLOB](/blog/images/output-1.png)](output-1.png)

Pierwszy wynik to po prostu wiadomość, którą dołączyliśmy do funkcji zapisującej plik binarny. Kliknięcie ikony strzałki w prawo otwiera drugi wynik. Poniższy obrazek przedstawia wyświetlany obraz po kliknięciu przycisku "Otwórz za pomocą..." i wybraniu programu Windows Photo Viewer jako domyślnej aplikacji do otwierania plików .png.

[![Podgląd obiektu binarnego wyekstrahowanego z bazy danych](/blog/images/output-2-1.png)](output-2-1.png)

Ścieżka dostępu do pliku, "C:\\projects\\objects", została podana jako dane wejściowe, a nazwa pliku, "diffdog_2021.png", została zapisana w bazie danych. Nazwa pliku wyświetlana w oknie podglądu, czyli "~mf95AE.png", to jedynie losowa nazwa używana do podglądu. W menu "Wyjście" znajduje się opcja trwałego zapisania pliku:

[![Zapisywanie wyświetlanej wersji wyników mapowania danych](/blog/images/output-menu-1.png)](output-menu-1.png)

Możemy zmodyfikować parametry i przeprowadzić kolejne testy. Tym razem użyjemy znaku wieloznacznego SQLite dla parametru "zasób", aby dopasować go do dowolnej wartości w bazie danych:

[![Zmiana wartości parametru dla innego testu.](/blog/images/mapping-4.png)](mapping-4.png)

Po kliknięciu przycisku "Wyjście" tym razem, pobierane są liczne obiekty binarne:

[![Wyodrębnianie wielu obiektów binarnych za pomocą parametru z użyciem symbolu wieloznacznego](/blog/images/output-3.png)](output-3.png)

Przeglądając wszystkie wyniki wyszukiwania plików binarnych, widzimy jeden arkusz danych w formacie PDF, jeden zrzut ekranu jako obraz .png oraz jeden logo również jako plik .png

[![Podgląd wielu wyodrębnionych obiektów binarnych](/blog/images/output-4.png)](output-4.png)

### Automatyzacja mapowania danych dla obiektów binarnych

Aby rozszerzyć nasze wymagania dotyczące zastosowań, załóżmy, że musimy umożliwić każdemu członkowi zespołu dostęp do zasobów produktów z bazy danych na żądanie. Serwer MapForce wykonuje [automatyczne transformacje danych](https://www.altova.com/pl/mapforce-server) w oparciu o zoptymalizowane mapowania danych, które zostały zaprojektowane w MapForce.

Można zainstalować jedną kopię serwera MapForce na serwerze sieciowym i udostępnić ją wielu użytkownikom. Następnie wystarczy zapisać mapowanie danych jako plik wykonywalny serwera MapForce (.mfx) z menu "Wyjście" w programie MapForce. Użyjemy nazwy pliku "extract-product-assets-from-DB.mfx".

[![Tworzenie pliku wykonywalnego w celu automatyzacji mapowania danych obiektów binarnych](/blog/images/compile.png)](compile.png)

Mapowanie danych można następnie uruchomić z linii poleceń przez dowolnego uwierzytelnionego użytkownika. Parametry dla komponentów wejściowych o nazwach "product", "asset" i "userPath", używane w mapowaniu, są przypisywane w czasie działania programu przez polecenie. Możemy nawet utworzyć przykładowe polecenie w pliku wsadowym, które użytkownicy mogą edytować i uruchamiać w razie potrzeby:

[![Przykład użycia wiersza poleceń do automatyzacji mapowania danych dla plików binarnych](/blog/images/command-line.png)](command-line.png)

Byłoby to proste zadanie – dodać komentarze zawierające instrukcje dotyczące edycji, aby wypisać możliwe wartości dla każdego parametru.

Aby jeszcze bardziej zautomatyzować proces produkcji, mapowania MapForce można wdrożyć na serwerze FlowForce i [uruchamiać w oparciu o różnorodne wyzwalacze](https://www.altova.com/pl/flowforceserver). Aby rozpocząć własny projekt mapowania, konwersji i transformacji danych, [pobierz bezpłatną wersję próbną](https://www.altova.com/pl/download), która zawiera samouczki, pomoc oraz wiele dodatkowych przykładów!
