---
title: Mapeamento de Dados de Objetos Binários – Parte 2
date: 2020-10-30
categories:
  - data-integration
  - database-mapping
  - sql
  - tools
tags:
  - binary-objects
  - data-mapping
  - mapforce
description: Mapeamento de objetos binários para extrair dados binários de uma base de dados e guardá-los numa forma compreensível, mantendo a fidelidade aos dados originais.
---
Status: #blog

Tags:  #binary-objects #data-mapping #mapforce

Categories: [data-integration](/blog/pt/category/data-integration.md) | [database + sql](/blog/pt/category/database-sql.md) 
# Mapeamento de Dados de Objetos Binários – Parte 2

Objetos binários – BLOBs – podem ser difíceis de gerir em bases de dados. Numa publicação anterior, descrevemos um mapeamento de dados no MapForce para [inserir objetos binários numa base de dados](https://www.altova.com/blog/), com metadados gerados para identificar os BLOBs posteriormente. O desafio complementar no mapeamento de objetos binários é extrair os dados binários e guardá-los numa forma compreensível, que seja fiel ao original.

Vamos analisar como isso é feito.

![](/blog/images/blob-extraction.png)

<!--more-->

A função integrada do MapForce, "write-binary-file", extrai valores do tipo BLOB de uma base de dados e escreve-os em ficheiros. Vamos expandir o exemplo na ajuda online do MapForce para criar um complemento ao artigo anterior. O nosso mapeamento atualizado utiliza parâmetros fornecidos em tempo de execução para extrair um ou mais objetos binários da base de dados.

O objetivo inicial da publicação era utilizar uma base de dados SQLite para monitorizar diversos ficheiros binários que continham elementos gráficos para produtos, destinados a um departamento de marketing. Estes dados binários podem incluir, por exemplo, ficheiros de imagens de logótipos, documentos PDF com fichas técnicas de produtos, capturas de ecrã do produto em utilização, fotografias, ficheiros de vídeo, etc. A nossa tabela de base de dados inclui metadados sobre o produto, o tipo de elemento gráfico e o nome original de cada ficheiro.

Começamos o mapeamento de objetos binários para extração, importando a base de dados para um novo mapeamento. Desta vez, em vez de selecionar uma tabela para o mapeamento, vamos criar uma consulta SQL SELECT com parâmetros para filtrar os resultados com base nos campos de metadados do produto e do tipo de ativo. A instrução SELECT irá retornar um ou mais objetos BLOB e os seus nomes de ficheiro originais.

[![Criar uma consulta SELECT com parâmetros para extrair um objeto binário grande (BLOB)](/blog/images/create-query.png)](create-query.png)

Em seguida, clicamos na instrução SELECT no painel de mapeamento para exibir os parâmetros que podem ser utilizados no mapeamento

[![Adicionar a consulta com parâmetros ao mapeamento de dados](/blog/images/insert-call.png)](insert-call.png)

Agora, cada parâmetro e resultado individualmente está disponível:

[![Visão geral da instrução SELECT, com todos os parâmetros e resultados](/blog/images/mapping-2-1.png)](mapping-2-1.png)

Utilizando a opção "Inserir Entrada", seja através do menu "Inserir" principal ou do ícone na barra de ferramentas, podemos inserir um campo especial para testes durante o processo de design. Posteriormente, durante a execução automatizada, podemos fornecer novos valores de parâmetros para substituir os valores padrão.

[![Adicionar valores padrão para os parâmetros da consulta](/blog/images/create-input.png)](create-input.png)

Pode especificar um valor padrão no momento do design no diálogo de definição da entrada, mas prefiro definir o valor padrão como uma constante de texto, como mostrado acima. O valor padrão fica visível sem precisar abrir o diálogo, e é mais rápido alterar o valor para fins de teste.

Vamos seguir o exemplo da ajuda do MapForce [para mapeamento de objetos binários](https://www.altova.com/manual/Mapforce/mapforceenterprise/mff_binary_example_write.html) para criar o mapeamento do resultado da consulta SELECT. Aqui está o mapeamento completo:

[![Exemplo completo de mapeamento de dados de objetos binários para extração de uma base de dados](/blog/images/mapping-3.png)](mapping-3.png)

A função "write-binary-file" destacada no esquema permite guardar o conteúdo do objeto binário na base de dados num ficheiro especificado no caminho fornecido como entrada.

Refinámos o exemplo de mapeamento com duas melhorias. O exemplo utilizava um valor de texto fixo para o nome do ficheiro do objeto binário, mas nós mapeámos o nome de ficheiro original proveniente da base de dados. Além disso, fornecemos outro objeto de entrada, chamado "userPath", para concatenar a localização de uma pasta e o nome do ficheiro.

Neste momento, estamos prontos para testar a transformação clicando no botão "Saída" (Output) que se encontra na parte inferior da janela de design da transformação. O MapForce executa a consulta com os parâmetros definidos na transformação e a janela de saída é aberta:

[![Mensagem de saída para indicar a extração bem-sucedida de um objeto binário grande (BLOB)](/blog/images/output-1.png)](output-1.png)

A primeira saída é simplesmente a mensagem que associámos à função "write-binary-file". Clicar no ícone da seta para a direita abre a segunda saída. A imagem abaixo mostra o que aparece depois de clicarmos no botão "Abrir com..." para definir o Visualizador de Fotografias do Windows como a aplicação para o ficheiro .png.

[![Pré-visualização de um objeto binário extraído da base de dados](/blog/images/output-2-1.png)](output-2-1.png)

O caminho do ficheiro fornecido foi "C:\\projects\\objects" e o nome do ficheiro armazenado na base de dados foi "diffdog_2021.png". O nome do ficheiro exibido na janela de visualização da imagem, "~mf95AE.png", é apenas um nome aleatório usado para a pré-visualização do resultado. O menu "Saída" inclui uma opção para guardar o ficheiro permanentemente:

[![Guardar a versão pré-visualizada do resultado do mapeamento de dados](/blog/images/output-menu-1.png)](output-menu-1.png)

Podemos editar os parâmetros e tentar outro teste. Desta vez, vamos usar o caractere curinga do SQLite para o parâmetro de ativo, de forma a corresponder a qualquer valor na base de dados:

[![Alterar o valor de um parâmetro para outro teste.](/blog/images/mapping-4.png)](mapping-4.png)

Quando clicamos no botão "Saída" desta vez, são recuperados vários objetos binários:

[![Extrair múltiplos objetos binários através de um valor de parâmetro de caractere curinga](/blog/images/output-3.png)](output-3.png)

Ao analisar todos os resultados dos ficheiros binários, vemos que um deles é uma folha de dados em formato PDF, outro é uma captura de ecrã em formato .png, e um terceiro é um logótipo também em formato .png:

[![Pré-visualização de múltiplos objetos binários extraídos](/blog/images/output-4.png)](output-4.png)

### Automatizar o mapeamento de dados em objetos binários

Para expandir os requisitos de utilização, vamos supor que precisamos permitir que qualquer membro da equipa aceda aos recursos de produtos na base de dados, sempre que necessário. O MapForce Server realiza [transformações de dados automatizadas](https://www.altova.com/pt/mapforce-server), com base em mapeamentos de dados otimizados, criados no MapForce.

Uma cópia do MapForce Server pode ser instalada num servidor de rede e disponibilizada a vários utilizadores. Depois, basta guardar o mapeamento de dados como um ficheiro de execução do MapForce Server (.mfx) através do menu "Saída" do MapForce. Utilizaremos o nome de ficheiro "extract-product-assets-from-DB.mfx".

[![Criar um ficheiro de execução para automatizar o mapeamento de objetos binários de dados](/blog/images/compile.png)](compile.png)

Os dados podem então ser mapeados a partir da linha de comandos por qualquer utilizador autenticado. Os parâmetros para os componentes de entrada, designados "produto", "ativo" e "userPath", são atribuídos em tempo de execução pelo comando. Podemos até criar um exemplo de comando na linha de comandos num ficheiro de lote que os utilizadores podem editar e executar conforme necessário:

[![Exemplo de linha de comando para automatizar o mapeamento de dados de objetos binários](/blog/images/command-line.png)](command-line.png)

Seria uma tarefa simples adicionar comentários com instruções de edição para listar os valores possíveis para cada parâmetro.

Para uma produção ainda mais automatizada, as configurações do MapForce podem ser implementadas no servidor FlowForce e.. [executado com base numa variedade de fatores desencadeadores](https://www.altova.com/pt/flowforceserver). Para começar o seu próprio projeto de mapeamento, conversão e transformação de dados, [Descarregue uma versão de avaliação gratuita](https://www.altova.com/pt/download) incluindo tutoriais, ajuda e muitos outros exemplos!
