---
title: Mappatura dei dati per oggetti binari
date: 2020-10-21
categories:
  - data-integration
  - database-mapping
  - sql
  - tools
tags:
  - binary-objects
  - data-mapping
description: Altova MapForce, lo strumento di mappatura dati pluripremiato, include funzionalità che consentono di mappare facilmente oggetti binari verso o da tutti i principali database relazionali.
---
Status: #blog

Tags:  #binary-objects #data-mapping

Categories: [data-integration](/blog/it/category/data-integration.md) | [database + sql](/blog/it/category/database-sql.md) 
# Mappatura dei dati per oggetti binari

Gli oggetti binari sono difficili da gestire nei database. Sono di grandi dimensioni, il loro contenuto non è leggibile dagli esseri umani e possono contenere byte di dati che possono essere facilmente interpretati come caratteri di controllo. Anche il nome del tipo di dati per gli oggetti binari di grandi dimensioni – BLOB – riflette la scarsa predilezione che molti gestori di database nutrono nei loro confronti. Prima dell'avvento dei database relazionali, la definizione di un BLOB era "qualcosa di indefinito o amorfo"

Altova MapForce, il software pluripremiato, [Strumento di mappatura grafica dei dati per la conversione e l'integrazione da qualsiasi formato a qualsiasi altro](https://www.altova.com/it/mapforce), Include funzionalità che consentono di mappare facilmente dati binari verso o da tutti i principali database relazionali. È possibile mappare dati come immagini, file PDF, file video o qualsiasi altro tipo di dato binario. Vediamo un esempio.

![](/blog/images/blob-insertion.png)

<!--more-->

MapForce include due funzioni integrate, "read-binary-file" e "write-binary-file", per la mappatura tra oggetti binari e database. In questo articolo, espanderemo un esempio di "read-binary-file" tratto dalla guida online di MapForce, al fine di creare una mappatura completa per inserire diversi tipi di oggetti binari in un database relazionale.

Ecco un esempio che illustra come inserire un'immagine in un database:

[![Esempio di mappatura di file binari nell'help online](/blog/images/help-ex-1.png)](help-ex-1.png)

Questa mappatura inserisce il file locale denominato image01.png in una tabella del database. Possiamo notare che il database è strutturato in modo da includere alcune informazioni aggiuntive sull'immagine in colonne separate, che possono essere utilizzate per interrogare il database e recuperare la stessa immagine. Non si vuole caricare file di dati binari di grandi dimensioni nel database senza avere un modo per ritrovarli in seguito!

Per il nostro caso d'uso, creeremo un database SQLite per tracciare vari file binari che rappresentano risorse a supporto di diversi prodotti per un dipartimento di marketing. Questi dati binari potrebbero includere file di immagini di loghi, file PDF per le schede tecniche dei prodotti, schermate del prodotto in uso, fotografie, file video, ecc.

Inizieremo con un semplice file di testo in formato CSV per descrivere le informazioni che desideriamo inserire:

[![Modello CSV per il caricamento dei dati nel database](/blog/images/csv-model.png)](csv-model.png)

Al termine di questo progetto, gli utenti potrebbero avere decine, o addirittura centinaia, di risorse nel database. Quando sarà necessario estrarre una risorsa in seguito, i nomi dei tipi di risorsa saranno metadati fondamentali per le query. Tuttavia, se anche una sola voce nella colonna dei tipi contiene errori di ortografia o è incoerente, un enorme oggetto binario risulterà orfano e irrecuperabile.

Possiamo definire un elenco di tipi di risorse importando il file CSV in XMLSpy e generando uno schema XML in cui l'elemento "Type" viene selezionato da un elenco predefinito. In questo modo, anche un tirocinante del reparto marketing può creare un elenco di risorse nella visualizzazione a griglia di [XMLSpy](https://www.altova.com/it/xmlspy-xml-editor). Il campo "Tipo" sarà obbligatorio:

[![Modello di caricamento di database nella visualizzazione a griglia di XMLSpy.](/blog/images/grid-view-1.png)](grid-view-1.png)

Potremmo anche aggiungere un elenco di nomi di prodotto allo schema XML, oppure, almeno, rendere obbligatoria la presenza dell'elemento "Prodotto". Possiamo persino impostare il tipo di risorsa su "xs:anyURI", obbligando così il riferimento a un file. Ecco la finestra di aiuto "Dettagli" nella vista dello schema di XMLSpy, con l'impostazione del tipo di dati per l'elemento "Risorsa":

[![Definizione del tipo XML Schema per l'elemento "Asset" del modello di caricamento](/blog/images/asset-details.png)](asset-details.png)

La mappatura degli oggetti binari in MapForce è sostanzialmente identica, sia che si mappino dati provenienti da un file CSV o da un file XML.

Inizieremo aprendo una nuova istanza di MapForce, uno strumento per la mappatura e la trasformazione dei dati, e importeremo l'elenco delle nostre risorse e la tabella del database.

[![Mappatura di oggetti binari tra un elenco di oggetti di origine e una tabella di database](/blog/images/map1.png)](map1.png)

Abbiamo utilizzato DatabaseSpy per [creare una nuova tabella in un database SQLite](https://www.altova.com/it/databasespy), apportando alcune modifiche all'esempio presente nella guida di MapForce. La colonna "prodotto" conterrà il nome del prodotto, mentre la colonna "descrizione" conterrà il tipo di risorsa. La colonna "recordDate" terrà traccia della data di creazione di ciascun oggetto binario.

Ora, impostiamo la colonna "id" in modo che generi automaticamente un numero, come descritto nella guida di MapForce, e creiamo le semplici connessioni tra la sorgente e la destinazione

[![Semplici collegamenti di mappatura tra l'elenco degli oggetti di origine e la tabella del database](/blog/images/map2.png)](map2.png)

Il prodotto e il tipo, estratti dalla mappa di origine, vengono direttamente associati alle colonne del database. La mappatura dell'elemento "Riga" indica che ogni riga di dati in ingresso deve creare un nuovo record nel database.

Ora, mapperemo i dati binari a oggetti BLOB (Binary Large Object) nel database:

[![Mappare gli oggetti binari a oggetti BLOB (Binary Large Object) nel database](/blog/images/map3.png)](map3.png)

La funzione integrata MapForce, "read-binary-file", utilizza il nome del file fornito nell'elemento "Asset" della sorgente per creare l'oggetto binario (BLOB). La funzione "read-binary-file" considera sempre la sorgente come dati in formato base64, indipendentemente da eventuali convenzioni basate sul nome del file di origine.

Per completare la mappatura, abbiamo bisogno di connessioni che permettano di estrarre il nome del file dall'elemento e di salvare la data di archiviazione

[![Esempio completo di mappatura di oggetti binari](/blog/images/map4.png)](map4.png)

La funzione "rimuovi cartella" estrae automaticamente il nome del file da qualsiasi percorso, che si tratti di file locali, file di rete o file presenti sul web.

La funzione "now" registra la data e l'ora di esecuzione dell'operazione, ma noi vogliamo solo la data, quindi abbiamo utilizzato la funzione "substring-before" per eliminare la parte relativa all'ora.

Il pulsante "Esegui" situato nella parte inferiore della finestra di mappatura esegue la mappatura e genera uno script SQL:

[![Script SQL generato per la mappatura di oggetti binari](/blog/images/sql-script.png)](sql-script.png)

Lo script è solo un'anteprima per verificare i risultati ottenuti finora. Per eseguire lo script, selezionare l'opzione corrispondente nel menu principale "Output"

[![Opzione del menu per eseguire lo script SQL che gestisce la mappatura dei dati relativi agli oggetti binari](/blog/images/output-menu.png)](output-menu.png)

Il risultato dello script viene visualizzato:

[![Risultato dello script SQL dopo la mappatura dei dati degli oggetti binari, eseguita con successo](/blog/images/script-result.png)](script-result.png)

Cliccheremo sul pulsante "Query DB" per connetterci al database e, successivamente, verificheremo i risultati direttamente in MapForce:

[![Finestra di interrogazione del database di MapForce per la validazione della mappatura dei dati e degli oggetti binari](/blog/images/db-query.png)](db-query.png)

Non si possono ricavare molte informazioni osservando i dati binari (BLOB) nella colonna "productfile", ma le altre colonne forniscono metadati utili su ciascun elemento.

In una [post di aggiornamento](https://www.altova.com/blog/data-mapping-binary-objects-part-2/) mostreremo come mappare i dati, associando oggetti binari a [estrarre i dati dal database](https://www.altova.com/blog/data-mapping-binary-objects-part-2/) e salvarli nella loro forma originale. Se proprio non potete aspettare, [scaricare una versione di prova gratuita](https://www.altova.com/it/download) compresi tutorial, guide e numerosi esempi per iniziare subito con il vostro progetto di mappatura, conversione e trasformazione dei dati!
