---
title: Data-mapping van binaire objecten – Deel 2
date: 2020-10-30
categories:
  - data-integration
  - database-mapping
  - sql
  - tools
tags:
  - binary-objects
  - data-mapping
  - mapforce
description: Het omzetten van binaire objecten om binaire gegevens uit een database te extraheren en deze op te slaan in een begrijpelijke vorm die trouw is aan het origineel.
---
Status: #blog

Tags:  #binary-objects #data-mapping #mapforce

Categories: [data-integration](/blog/nl/category/data-integration.md) | [database + sql](/blog/nl/category/database-sql.md) 
# Data-mapping van binaire objecten – Deel 2

Binair objecten – BLOB's – kunnen lastig te beheren zijn in databases. In een eerdere publicatie beschreven we een MapForce-datamapping om [binaire objecten in een database op te slaan](https://www.altova.com/blog/), met gegenereerde metadata om de BLOB's later te kunnen identificeren. Een gerelateerde uitdaging bij het mappen van binaire objecten is het extraheren van de binaire data en het opslaan ervan in een begrijpelijke vorm die trouw is aan het origineel.

Laten we eens kijken hoe dat in zijn werk gaat.

![](/blog/images/blob-extraction.png)

<!--more-->

De ingebouwde MapForce-functie "write-binary-file" haalt BLOB-waarden uit een database en schrijft deze naar bestanden. We zullen het voorbeeld in de online Help van MapForce uitbreiden om een aanvulling te maken op de eerdere publicatie. Onze herziene mapping gebruikt parameters die tijdens runtime worden aangeleverd om één of meerdere binaire objecten uit de database te extraheren.

Het oorspronkelijke doel van de database was het bijhouden van verschillende soorten bestanden die gebruikt werden voor marketingdoeleinden, zoals afbeeldingen, PDF-documenten, screenshots, foto's en video's, die allemaal gerelateerd waren aan specifieke producten. De database gebruikte SQLite en bevatte metadata over het product, het type bestand en de oorspronkelijke bestandsnaam.

We beginnen met het mappen van binaire objecten voor extractie door de database in een nieuwe mapping te plaatsen. Deze keer, in plaats van een tabel te selecteren voor de mapping, gaan we een SQL SELECT-query maken met parameters om de resultaten te filteren op basis van de metadata-velden voor het product- en assettype. De SELECT-statement zal één of meerdere BLOB's en hun oorspronkelijke bestandsnamen retourneren.

[![Het maken van een SELECT-query met parameters om een BLOB-object op te halen](/blog/images/create-query.png)](create-query.png)

Vervolgens klikken we op de SELECT-statement in het configuratiepaneel om de parameters weer te geven die gebruikt kunnen worden voor de mapping

[![Het toevoegen van de query met parameters aan de datamapping](/blog/images/insert-call.png)](insert-call.png)

Nu zijn alle individuele parameters en resultaten beschikbaar

[![Weergave van de SELECT-statement met alle parameters en uitvoerwaarden](/blog/images/mapping-2-1.png)](mapping-2-1.png)

Met behulp van de functie "Invoegen" via het hoofdmenu "Invoegen" of het pictogram in de werkbalk, kunnen we een speciaal veld toevoegen voor het uitvoeren van tests tijdens het ontwerp. Later, tijdens de geautomatiseerde uitvoering, kunnen we nieuwe parameterwaarden invoeren om de standaardwaarden te overschrijven.

[![Het toevoegen van standaardwaarden voor de zoekparameters](/blog/images/create-input.png)](create-input.png)

U kunt een standaardwaarde instellen in het dialoogvenster voor de invoerdefinitie, maar ik geef de standaardwaarde liever als een stringconstante, zoals hierboven te zien is. De standaardwaarde is dan zichtbaar zonder het dialoogvenster te openen, en het is sneller om de waarde aan te passen voor het testen.

We volgen het voorbeeld in de MapForce-handleiding [voor het mappen van binaire objecten](https://www.altova.com/manual/Mapforce/mapforceenterprise/mff_binary_example_write.html) om de mapping te maken voor het resultaat van de SELECT-query. Hieronder staat de voltooide mapping:

[![Volledig voorbeeld van data-mapping voor binaire objecten, bedoeld voor het extraheren van gegevens uit een database](/blog/images/mapping-3.png)](mapping-3.png)

De functie "write-binary-file" die in de documentatie wordt benadrukt, slaat de inhoud van het binaire object op in de database op in een bestand dat wordt opgegeven via het pad in de invoer.

We hebben de voorbeeldmapping verbeterd met twee toevoegingen. In het oorspronkelijke voorbeeld werd een vaste stringwaarde gebruikt voor de bestandsnaam van het binaire object, maar we hebben nu de oorspronkelijke bestandsnaam uit de database gebruikt. Bovendien hebben we een ander invoerobject, genaamd "userPath", toegevoegd om een maplocatie en de bestandsnaam te combineren.

Op dit moment zijn we klaar om de mapping te testen. Klik hiervoor op de knop "Output" onderaan het ontwerpvenster van de mapping. MapForce voert de query uit met de parameters die in de mapping zijn gedefinieerd, en het venster "Output" wordt geopend:

[![Bericht dat wordt weergegeven bij een succesvolle extractie van een BLOB-object](/blog/images/output-1.png)](output-1.png)

De eerste uitvoer is simpelweg de melding die we aan de functie "schrijf-naar-binair-bestand" hebben toegevoegd. Door op het pictogram met de rechterpijl te klikken, wordt de tweede uitvoer weergegeven. De afbeelding hieronder toont het scherm nadat we op de knop "Openen met..." hebben geklikt om Windows Foto bekijken in te stellen als de applicatie voor het .png-bestand.

[![Voorbeeld van een binair object dat uit de database is geëxtraheerd](/blog/images/output-2-1.png)](output-2-1.png)

Het opgegeven bestandspad was "C:\\projects\\objects" en de bestandsnaam die in de database is opgeslagen, was "diffdog_2021.png". De bestandsnaam die in het fotovenster wordt weergegeven, "~mf95AE.png", is slechts een willekeurige naam voor de voorbeeldweergave. Het menu "Output" bevat een optie om het bestand permanent op te slaan:

[![Het opslaan van de voorgedachte versie van de output van de datamapping](/blog/images/output-menu-1.png)](output-menu-1.png)

We kunnen de parameters aanpassen en een nieuwe test uitvoeren. Deze keer gebruiken we het wildcard-teken van SQLite voor de parameter "asset" om alles in de database te selecteren:

[![Het wijzigen van een parameterwaarde voor een andere test.](/blog/images/mapping-4.png)](mapping-4.png)

Wanneer we deze keer op de knop "Output" klikken, worden meerdere binaire objecten opgehaald:

[![Het extraheren van meerdere binaire objecten met behulp van een wildcard-parameterwaarde](/blog/images/output-3.png)](output-3.png)

Door alle resultaten van de binaire bestanden te bekijken, zien we een datablad als een PDF-bestand, een screenshot als een .png-afbeelding, en een logo, ook als een .png-bestand

[![Voorbeeldweergave van meerdere geëxtraheerde binaire objecten](/blog/images/output-4.png)](output-4.png)

### Automatiseer het koppelen van gegevens en binaire objecten

Om onze eisen voor de functionaliteit verder uit te breiden, nemen we aan dat we alle teamleden de mogelijkheid moeten geven om op aanvraag productgegevens uit de database op te halen. MapForce Server voert [geautomatiseerde datatransformaties](https://www.altova.com/nl/mapforce-server) uit, gebaseerd op geoptimaliseerde datamappingen die in MapForce zijn ontworpen.

Een exemplaar van MapForce Server kan op een netwerkserver worden geïnstalleerd en toegankelijk gemaakt voor meerdere gebruikers. Vervolgens hoeven we alleen nog maar de datamapping op te slaan als een MapForce Server uitvoeringsbestand (.mfx) via het MapForce Output-menu. We gebruiken de bestandsnaam extract-product-assets-from-DB.mfx.

[![Het maken van een uitvoerbaar bestand om het automatisch toewijzen van gegevens aan binaire objecten te automatiseren](/blog/images/compile.png)](compile.png)

De datamapping kan vervolgens vanuit de opdrachtregel worden uitgevoerd door elke geauthenticeerde gebruiker. De parameters voor de invoercomponenten met de namen "product", "asset" en "userPath" worden tijdens de uitvoering toegewezen door de opdracht. We kunnen zelfs een voorbeeld van een opdrachtregel in een batchbestand maken, die gebruikers kunnen bewerken en uitvoeren indien nodig:

[![Voorbeeld van een commando om het automatisch toewijzen van gegevens aan binaire objecten te automatiseren](/blog/images/command-line.png)](command-line.png)

Het zou een eenvoudige taak zijn om commentaar toe te voegen met instructies voor het bewerken, waarin de mogelijke waarden voor elk parameter worden vermeld.

Voor een nog meer geautomatiseerde productie kunnen MapForce-mappingen worden geïmplementeerd op de FlowForce Server en [uitgevoerd op basis van verschillende triggers](https://www.altova.com/nl/flowforceserver). Om aan de slag te gaan met uw eigen project voor data-mapping, -conversie en -transformatie, [download een gratis proefversie](https://www.altova.com/nl/download) inclusief tutorials, hulp en nog veel meer voorbeelden!
