---
title: Mappatura dei dati per oggetti binari – Parte 2
date: 2020-10-30
categories:
  - data-integration
  - database-mapping
  - sql
  - tools
tags:
  - binary-objects
  - data-mapping
  - mapforce
description: Mappatura dei dati binari per estrarre i dati binari da un database e salvarli in un formato comprensibile, mantenendo la fedeltà all'originale.
---
Status: #blog

Tags:  #binary-objects #data-mapping #mapforce

Categories: [data-integration](/blog/it/category/data-integration.md) | [database + sql](/blog/it/category/database-sql.md) 
# Mappatura dei dati per oggetti binari – Parte 2

Gli oggetti binari, o BLOB, possono essere difficili da gestire nei database. In un articolo precedente, abbiamo descritto una mappatura dei dati con MapForce per [inserire oggetti binari in un database](https://www.altova.com/blog/), generando metadati per identificare i BLOB in seguito. La sfida complementare nella mappatura di oggetti binari consiste nell'estrarre i dati binari e salvarli in un formato comprensibile, mantenendo la fedeltà all'originale.

Vediamo come si fa.

![](/blog/images/blob-extraction.png)

<!--more-->

La funzione integrata di MapForce, "write-binary-file", estrae i valori BLOB da un database e li scrive in file. Amplieremo l'esempio presente nella guida online di MapForce per creare un complemento al precedente articolo. La nostra mappatura rivista utilizza parametri forniti a runtime per estrarre uno o più oggetti binari dal database.

L'utilizzo previsto per il sistema originale era un database SQLite per tracciare diversi tipi di file binari che rappresentavano risorse a supporto dei prodotti per un dipartimento di marketing. Questi dati binari potevano includere file di immagini di loghi, file PDF per le schede tecniche dei prodotti, schermate del prodotto in uso, fotografie, file video, ecc. La nostra tabella del database include metadati relativi al prodotto, al tipo di risorsa e al nome originale di ogni file.

Iniziamo la mappatura degli oggetti binari per l'estrazione, importando il database in una nuova mappatura. Questa volta, invece di selezionare una tabella per la mappatura, creeremo una query SQL SELECT con parametri per filtrare i risultati in base ai campi di metadati relativi al tipo di prodotto e di risorsa. L'istruzione SELECT restituirà uno o più oggetti BLOB e i loro nomi di file originali.

[![Creare una query SELECT con parametri per estrarre un oggetto BLOB](/blog/images/create-query.png)](create-query.png)

Successivamente, clicchiamo sull'istruzione SELECT nel pannello di mappatura per visualizzare i parametri da utilizzare per la mappatura

[![Aggiungere la query con i parametri alla mappatura dei dati](/blog/images/insert-call.png)](insert-call.png)

Ora, ogni singolo parametro e risultato è disponibile

[![Visualizzazione dell'istruzione SELECT con tutti i parametri e i risultati](/blog/images/mapping-2-1.png)](mapping-2-1.png)

Utilizzando la funzione "Inserisci input", accessibile dal menu "Inserisci" principale o dall'icona nella barra degli strumenti, è possibile inserire un campo speciale per i test durante la fase di progettazione. Successivamente, durante l'esecuzione automatizzata, è possibile fornire nuovi valori per i parametri, sovrascrivendo così i valori predefiniti.

[![Aggiungere valori predefiniti per i parametri della query](/blog/images/create-input.png)](create-input.png)

È possibile specificare un valore predefinito durante la fase di progettazione nel dialogo di definizione dell'input, ma preferisco impostare il valore predefinito come una costante di stringa, come mostrato nell'esempio precedente. In questo modo, il valore predefinito è visibile senza dover aprire il dialogo, e risulta più rapido modificarlo per i test.

Seguiremo l'esempio fornito nella guida di MapForce [per la mappatura di oggetti binari](https://www.altova.com/manual/Mapforce/mapforceenterprise/mff_binary_example_write.html) per creare la mappatura del risultato della query SELECT. Ecco la mappatura completata:

[![Esempio completo di mappatura dei dati per oggetti binari, al fine di estrarli da un database](/blog/images/mapping-3.png)](mapping-3.png)

La funzione "write-binary-file" evidenziata nella documentazione salva il contenuto dell'oggetto binario nel database in un file specificato nel percorso indicato nell'input.

Abbiamo migliorato l'esempio di mappatura con due modifiche. L'esempio utilizzava un valore di stringa fisso per il nome del file dell'oggetto binario, ma noi abbiamo mappato il nome del file originale proveniente dal database. Inoltre, abbiamo fornito un altro oggetto di input, chiamato "userPath", per concatenare il percorso di una cartella e il nome del file.

A questo punto, siamo pronti per testare la mappatura. Per farlo, cliccate sul pulsante "Output" situato nella parte inferiore della finestra di progettazione della mappatura. MapForce eseguirà la query utilizzando i parametri definiti nella mappatura e si aprirà la finestra "Output":

[![Messaggio di output per l'estrazione riuscita di un oggetto BLOB](/blog/images/output-1.png)](output-1.png)

Il primo risultato è semplicemente il messaggio che abbiamo associato alla funzione "scrivi_file_binario". Cliccando sull'icona della freccia destra, si apre il secondo risultato. L'immagine qui sotto mostra la schermata visualizzata dopo aver cliccato sul pulsante "Apri con..." per impostare Windows Photo Viewer come applicazione predefinita per i file .png.

[![Anteprima di un oggetto binario estratto dal database](/blog/images/output-2-1.png)](output-2-1.png)

Il percorso del file fornito come input era "C:\\projects\\objects" e il nome del file memorizzato nel database era "diffdog_2021.png". Il nome del file visualizzato nella finestra dell'anteprima, "~mf95AE.png", è solo un nome casuale utilizzato per l'anteprima. Il menu "Output" include un'opzione per salvare definitivamente il file:

[![Salvataggio della versione di anteprima della mappatura dei dati](/blog/images/output-menu-1.png)](output-menu-1.png)

Possiamo modificare i parametri e provare un altro test. Questa volta, utilizzeremo il carattere jolly di SQLite per il parametro "asset" in modo da includere qualsiasi elemento nel database:

[![Modificare il valore di un parametro per un altro test.](/blog/images/mapping-4.png)](mapping-4.png)

Quando questa volta clicchiamo sul pulsante "Output", vengono recuperati diversi oggetti binari:

[![Estrarre più oggetti binari tramite un valore di parametro che utilizza un carattere jolly](/blog/images/output-3.png)](output-3.png)

Esaminando tutti i risultati relativi ai file binari, notiamo che uno è una scheda tecnica in formato PDF, uno è uno screenshot in formato .png, e un altro è un logo, anch'esso in formato .png

[![Anteprima di più oggetti binari estratti](/blog/images/output-4.png)](output-4.png)

### Automatizzare la mappatura dei dati per oggetti binari

Per ampliare i requisiti relativi ai casi d'uso, supponiamo di dover consentire a qualsiasi membro del team di accedere ai dati relativi ai prodotti dal database su richiesta. MapForce Server esegue [trasformazioni automatizzate dei dati](https://www.altova.com/it/mapforce-server) basate su mappature dati ottimizzate, progettate in MapForce.

Una copia di MapForce Server può essere installata su un server di rete e resa accessibile a più utenti. Successivamente, tutto ciò che dobbiamo fare è salvare la mappatura dei dati come file di esecuzione di MapForce Server (.mfx) dal menu "Output" di MapForce. Utilizzeremo il nome file "extract-product-assets-from-DB.mfx".

[![Creare un file eseguibile per automatizzare la mappatura dei dati relativi agli oggetti binari](/blog/images/compile.png)](compile.png)

Una volta definita la mappatura dei dati, questa può essere eseguita da qualsiasi utente autenticato tramite la riga di comando. I parametri per i componenti di input denominati "prodotto", "asset" e "userPath" vengono assegnati a runtime dal comando. Possiamo persino creare un esempio di comando da inserire in un file batch che gli utenti possono modificare ed eseguire secondo necessità:

[![Esempio di comando da riga per automatizzare la mappatura dei dati relativi a oggetti binari](/blog/images/command-line.png)](command-line.png)

Sarebbe un compito semplice aggiungere commenti con istruzioni di modifica per elencare i possibili valori di ciascun parametro.

Per una produzione ancora più automatizzata, le configurazioni di MapForce possono essere implementate su FlowForce Server e [eseguite in base a diversi trigger](https://www.altova.com/it/flowforceserver). Per iniziare il vostro progetto di mappatura, conversione e trasformazione dei dati, [scaricate una versione di prova gratuita](https://www.altova.com/it/download) che include tutorial, guide e molti altri esempi!
