---
title: データマッピング：バイナリオブジェクト - 第2部
date: 2020-10-30
categories:
  - data-integration
  - database-mapping
  - sql
  - tools
tags:
  - binary-objects
  - data-mapping
  - mapforce
description: データベースからバイナリデータを抽出し、元のデータに忠実な形で、人間が理解しやすい形式で保存するためのデータマッピング機能です。
---
Status: #blog

Tags:  #binary-objects #data-mapping #mapforce

Categories: [data-integration](/blog/ja/category/data-integration.md) | [database + sql](/blog/ja/category/database-sql.md) 
# データマッピング：バイナリオブジェクト - 第2部

バイナリオブジェクト（BLOB）は、データベースで管理するのが大変な場合があります。以前の記事では、生成されたメタデータを使用して、後でBLOBを識別できるように、[データベースにバイナリオブジェクトを挿入する](https://www.altova.com/blog/)ためのMapForceデータマッピングについて説明しました。データマッピングにおけるバイナリオブジェクトのもう一つの課題は、バイナリデータを抽出し、元のデータに忠実な、理解しやすい形式で保存することです。

それでは、その方法について見ていきましょう。

![](/blog/images/blob-extraction.png)

<!--more-->

MapForceに組み込まれた「write-binary-file」機能は、データベースからBLOB（Binary Large Object）型のデータを抽出し、ファイルに書き込みます。 今回、MapForceのオンラインヘルプにある例を拡張し、以前の投稿に関連する内容を追加します。 改訂版のマッピングでは、実行時に提供されるパラメータを使用して、データベースから1つ以上のバイナリオブジェクトを抽出します。

この事例では、マーケティング部門が製品をサポートするための様々なバイナリファイル資産を管理するために、SQLiteデータベースが使用されました。バイナリデータには、ロゴ画像ファイル、製品データシートのPDF、製品の使用状況を示すスクリーンショット、写真、ビデオファイルなどが含まれます。当社のデータベーステーブルには、製品に関する情報、アセットの種類、および各ファイルの元のファイル名に関するメタデータが含まれています。

データマッピングを開始するために、まずデータベースを新しいマッピングに投入し、バイナリオブジェクトを抽出します。今回は、マッピング対象のテーブルを選択する代わりに、SQLのSELECTクエリを作成し、パラメータを使用して、製品とアセットの種類に関するメタデータフィールドに基づいて結果をフィルタリングします。このSELECT文は、1つ以上のBLOBデータと、それらの元のファイル名を返します。

[![パラメータを使用して、BLOBデータを抽出するためのSELECTクエリを作成する](/blog/images/create-query.png)](create-query.png)

次に、マッピング領域にある「SELECT」ステートメントをクリックすると、マッピングに使用できるパラメータが表示されます

[![データマッピングにパラメータ付きのクエリを追加する](/blog/images/insert-call.png)](insert-call.png)

現在、各パラメータと出力値が個別に確認できるようになりました

[![SELECT文全体と、そのパラメータおよび出力結果の表示](/blog/images/mapping-2-1.png)](mapping-2-1.png)

メインメニューの「挿入」またはツールバーのアイコンから「挿入」機能を使用することで、設計段階中にテスト用の特別なフィールドを挿入できます。その後、自動実行時に、デフォルト値を上書きするための新しいパラメータ値を設定できます。

[![クエリパラメータにデフォルト値を設定します](/blog/images/create-input.png)](create-input.png)

入力定義ダイアログでデザイン時のデフォルト値を指定することもできますが、私は上記のように、デフォルト値を文字列定数として定義することをお勧めします。こうすることで、ダイアログを開かなくてもデフォルト値を確認でき、テストのために値を修正するのもより迅速です。

MapForceのヘルプを参照して進めます [データマッピングにおけるバイナリオブジェクトの例](https://www.altova.com/manual/Mapforce/mapforceenterprise/mff_binary_example_write.html) SELECTクエリの結果をマッピングするために、以下の設定を行いました。以下が完成したマッピング設定です

[![データベースからデータを抽出するための、バイナリオブジェクトのマッピングに関する完全なサンプル例](/blog/images/mapping-3.png)](mapping-3.png)

マッピングで強調表示されている「write-binary-file」関数は、データベースに保存されているバイナリオブジェクトの内容を、指定されたファイルパス（filepath）にあるファイルに保存します。

私たちは、サンプルマッピングを2つの点で改良しました。まず、サンプルではバイナリオブジェクトのファイル名を固定文字列で指定していましたが、データベースから元のファイル名を読み込むように変更しました。さらに、フォルダの場所とファイル名を結合するための別の入力オブジェクト「userPath」を提供しました。

この時点で、マッピングデザイン画面の下部にある「出力」ボタンをクリックして、マッピングのテストを行う準備が整いました。MapForceは、定義されたマッピングに基づいてクエリを実行し、「出力」ウィンドウが開きます

[![BLOBデータの正常な抽出が完了した際のメッセージ](/blog/images/output-1.png)](output-1.png)

最初の出力は、`write-binary-file`関数に付加したメッセージです。右矢印アイコンをクリックすると、2番目の出力が表示されます。以下に示されているのは、`.png`ファイルを開く際に「Windows フォト ビューア」をアプリケーションとして指定し、「開く」ボタンをクリックした後の画面です。

[![データベースから抽出されたバイナリオブジェクトのプレビュー](/blog/images/output-2-1.png)](output-2-1.png)

指定されたファイルパスは "C:\\projects\\objects" であり、データベースに保存されているファイル名は "diffdog_2021.png" でした。写真ウィンドウに表示されているファイル名 "~mf95AE.png" は、出力プレビュー用のランダムな名前です。出力メニューには、ファイルを永続的に保存するためのオプションがあります

[![プレビュー表示されたデータマッピングの結果を保存します](/blog/images/output-menu-1.png)](output-menu-1.png)

パラメータを編集して、別のテストを試すことができます。今回は、データベース内のあらゆるものを対象とするために、アセットパラメータにSQLiteのワイルドカード文字を使用します

[![別のテストのために、パラメータの値を変更します。](/blog/images/mapping-4.png)](mapping-4.png)

今回、「出力」ボタンをクリックすると、複数のバイナリオブジェクトが取得されます

[![ワイルドカードパラメータの値を使用して、複数のバイナリオブジェクトを抽出します](/blog/images/output-3.png)](output-3.png)

バイナリファイルの結果をすべて確認すると、データシートがPDFファイル、スクリーンショットが.png画像、そしてロゴも.pngファイルとして表示されています

[![抽出された複数のバイナリオブジェクトのプレビュー](/blog/images/output-4.png)](output-4.png)

### データマッピングの自動化：バイナリオブジェクトの処理

利用事例の範囲を広げるために、仮に、すべてのチームメンバーがデータベースから必要な製品関連データをオンデマンドで取得できるようにする必要があるとします。MapForce Serverは、MapForceで設計された最適化されたデータマッピングに基づいて、[自動的なデータ変換](https://www.altova.com/ja/mapforce-server)を実行します。

MapForce Serverのインストールファイルをネットワークサーバーにインストールし、複数のユーザーがアクセスできるようにすることができます。その後、MapForceの出力メニューから、データマッピングをMapForce Serverの実行ファイル（.mfx）として保存するだけです。ファイル名は「extract-product-assets-from-DB.mfx」とします。

[![データマッピングの処理を自動化するための実行ファイルを生成します](/blog/images/compile.png)](compile.png)

データマッピングは、認証されたユーザーであれば、コマンドラインから実行できます。マッピングにおける入力コンポーネント（product、asset、userPath）に設定されるパラメータは、コマンド実行時に指定されます。さらに、ユーザーが編集して必要に応じて実行できる、サンプルコマンドラインをバッチファイルとして作成することも可能です

[![データマッピングを自動化するためのコマンドラインの例（バイナリオブジェクト用）](/blog/images/command-line.png)](command-line.png)

各パラメータの可能な値の一覧に、編集指示を含むコメントを追加するのは簡単な作業です。

さらに自動化された生産を実現するために、MapForce の変換定義は FlowForce Server に展開することができます [様々な条件に基づいて実行されます](https://www.altova.com/ja/flowforceserver). 独自のデータマッピング、変換、およびデータ加工プロジェクトを開始するには、以下の手順をご参照ください [無料トライアル版をダウンロードする](https://www.altova.com/ja/download) チュートリアル、ヘルプ、そしてさらに多くのサンプルなど、様々なコンテンツをご用意しています。
