CData Arc - CSV ファイルをSQL でCRUD アクセスする(利用例)

by 色川穂高 | February 3, 2025

CData Arc - CSV ファイルをSQL でCRUD アクセスする(利用例)

こんにちは。CData Software Japan の色川です。

CSV(Comma-Separated Values)形式の歴史は古く、その高い汎用性などから、現在にいたるまで世界中の様々な場面で利用されています。2000 年代に入ってからはRFC として国際的な標準仕様も定義され、日本はもちろん、世界各国のオープンデータポータルでも多く利用されている「現在も増え続けているデータフォーマット」の1つです。

CData Arc では、CSV 形式のデータフォーマットと、Arc がデータ連携フローの中で操作するためのXML 形式を相互変換する「CSV コネクタ」が提供されていますが、データ連携のシナリオによっては、CSV 形式からの変換(またはCSV 形式への変換)のみならず「CSV ファイルをデータベースのようにCRUD アクセスしたい(SQL で扱いたい)」シナリオも良くあります。

そういった場面では、CSV コネクタでのシンプルな変換でなく、Arc から「CSV ファイルへのSQL アクセスを可能にするCData CSV Driver を組み合わせて利用する」と便利です。

この記事では、CData Arc から「CSV ファイルをデータベースのようにSQL を使ってCRUD アクセスする利用例」についてご紹介します。

CData Arc のCSV コネクタ

CData Arc では、CSV 形式のデータフォーマットと、Arc がデータ連携フローの中で操作するためのXML 形式を相互変換する「CSV コネクタ」が標準で提供されています。

CData Arc のCSV コネクタ

Arc のCSV コネクタは「外部にあるCSV ファイルをArc のフローに取り込む」または「Arc のフローからCSV ファイルとして外部に書き出す」ために必要なデータ形式の変換をシンプルな設定で実現することができるコネクタです。ヘッダー有無やファイル名、エンコーディングなど、CSV ファイルを扱いたいときの多くのニーズにフィットする機能が提供されています。

もちろん、CSV コネクタでXML 形式に変換してArc に取り込んだ後に、XML Map コネクタなどを利用して集約やマッピングをすることもできますが、この記事で紹介する例のように「CSV ファイルをデータベースのようにCRUD アクセスしたい」ケースでは、Arc のCData コネクタからCData CSV Driver を利用するアプローチも選択肢として知っておくと利便性が高まります。

Arc のCData コネクタ + CData CSV Driver

CData CSV Driver は「CSV やTSV 形式のファイルをデータベースのようにCRUD アクセスできる(SQL で扱える)Driver」です。CSV ファイルに対して、SQL を利用した強力で分かりやすいデータ操作を実現します。

Arc のCData コネクタ + CData CSV Driver

Arc のCData コネクタは、業界最多級のデータソース対応を誇るCData Drivers をArc からシームレスに利用することができるコネクタです。Arc で標準提供されているコネクタ以外のデータソースと連携したい場合にもCData Drivers を使って連携先を拡張できる点はArc の大きな魅力の1つです。

Arc のCData コネクタからCData CSV Driver を利用することで、Select アクションやUpsert アクション、Lookup アクションなど、 CSV ファイルをデータベースのようにCRUD アクセスすることができます。この記事では、そのようにSQL でCRUD アクセスすると便利な利用例を幾つかご紹介していきます。

Arc のCData コネクタ + CData CSV Driver

なお、Arc からCData CSV Driver を利用する際は、CData CSV Driver のライセンスが別途必要です。トライアルを実施される際は、あわせてインストールしてください。セットアップの概要については、こちらのヘルプトピックを参考にしてください。

また、CData CSV Driver は接続プロパティなどを通じて、利用シナリオに応じた振舞いの調整が可能です。CData CSV Driver の機能について詳しくはヘルプトピックを参考にしてください。

CSV ファイルをデータベースのようにCRUD アクセスする(利用例)

ここからは「CSV ファイルをデータベースのようにCRUD アクセスする利用例」を幾つか紹介していきます。

なお、Arc のCData コネクタからCData CSV Driver を利用する際は、URI プロパティなど、CSV ファイルの接続に必要となるプロパティの指定が必要です。CData コネクタの「高度な設定」で指定できるプロパティが多いですが、利用しているArc やDriver のバージョンによっては「高度な設定」に含まれる「Other Drivers Settings」プロパティでの指定が必要な場合もあります。期待通りに接続ができないという場合は、サポートデスクまでお気軽にお問い合わせください。

CSV ファイルをデータベースのようにCRUD アクセスする(利用例)

1. CSV ファイルをマスタとしてコード等を変換したい(ルックアップしたい)

企業間やシステム間でデータを連携する場面において双方のコード体系が異なる場合は良くあります。そのようなときに、双方のコードをマッピングするためのマスタを検索してコードを変換する(ルックアップする)ことは良くあるシナリオですが、マスタの規模や運用の優先度や選択においては、CSV ファイルをコードマスタとして運用したいというケースも良く伺います。

このようなケースでは、CSV ファイルをデータソースとしたLookup アクションが便利です。Lookup アクションの使い方については、こちらの記事ヘルプトピックを参考にしてください。

CSV ファイルをデータベースのようにCRUD アクセスする(利用例)

2. CSV ファイルのデータを集計した結果を取得したい

集計されていないCSV ファイルをデータソースにしてデータ連携フローの中で集計して別のデータソースへ連携したい、というケースは良くあるシナリオです。このようなケースでは、CSV ファイルをデータソースとしたSelect アクションを利用すれば、CData CSV Driver がサポートするSQL 構文をカスタムクエリの中で活用することができます。SQL の集計関数などを利用することで、複雑になりがちな集計演算などをとてもシンプルに効率良く実現することが可能です。

CSV ファイルをデータベースのようにCRUD アクセスする(利用例)

もちろん「集計されていないCSV ファイルを連携フローに取り込んでXML Map コネクタのマッピングの中で集計演算」したり「一度DBMS などへ連携した上で、DBMS から取得し直すときにSQL で集計する」アプローチなどもありますが、「データ連携フローの起点で集計した状態で取り込みたい」という場合には、とても分かりやすいアプローチと言えるでしょう。

3. CSV ファイルのデータを縦横で変換して取得したい

これは2. の中で少しレアな(応用的な)シナリオといえるかも知れません。企業間やシステム間を跨いでデータを授受する際に、期待するデータの持ち方(データ構造や集計軸)と異なった形で提供されるケースなどもままあると思います。例えば「左のようなデータ構造を右のようなデータ構造として扱いたいようなケースです。いわゆる「縦持ちのデータを、横持ちのデータとして変換したい」ような場面ですね。

CSV ファイルをデータベースのようにCRUD アクセスする(利用例)

CData CSV Driver をはじめ、多くのCData Drivers では、PIVOT / UNPIVOT 句もサポートしています。CData CSV Driver を利用すると、このような応用的なケースでも、SQL を利用して分かりやすく実現することができます。

CSV ファイルをデータベースのようにCRUD アクセスする(利用例)

4. 複数のCSV ファイルを結合させた結果を取得したい

Arc のSelect アクションでは、親子関係を持つオブジェクトを関連付けて一度に取得するChildTables という機構が提供されています。もちろん、このChildTables 機構は、CData コネクタでCData CSV Driver を利用するときにも活用できます。「複数のCSV ファイルに分かれて保存されている親子関係のデータを、一度のSelect アクションで合わせて(親子関係の構造で)取得したい」という場面などで便利に活用できるでしょう。

CSV ファイルをデータベースのようにCRUD アクセスする(利用例)

Arc のChildTables 機構については、こちらの記事ヘルプトピックを参考にしてください。

5. CSV ファイルのデータをレコード単位で更新したい

Arc のCData コネクタからCData CSV Driver を利用する構成では、Select アクションやLookup アクションでのデータ検索・取得のみでなく、Upsert アクションを利用したCSV ファイルへのデータ更新も可能です。

例えば「CSV ファイルの(中でkey に相当する)Id 列が foo のレコードが存在していれば指定したカラムをUpdate。存在していなければInsert(CSV ファイルに追記)」のように、他のデータソースへのUpsert アクションと同じ利便性の高い更新ロジックを構成することができます。

CSV ファイルをデータベースのようにCRUD アクセスする(利用例)

なお、Upsert アクションでCSV ファイルに対して更新や削除などの操作を実行したい場合は、どのカラムがkey に相当するかなどのスキーマ情報を判断できるようにしておく必要があります。これらの設定についてはこちらのヘルプトピックや、こちらのプロパティなどを参考にしてください。

まとめ

この記事では、CData Arc から「CSV ファイルをデータベースのようにSQL を使ってCRUD アクセスする利用例」についてご紹介しました。

もちろん、CSV コネクタでXML 形式に変換してArc に取り込んだ後に、XML Map コネクタのマッピングの中で集計演算をしたり、ArcScript で利用できるCSV ファイル向けのオペレーションを活用することで実現を検討することもできますが、今回ご紹介した例のように「CSV ファイルをデータベースのようにCRUD アクセスしたい」ケースでは、Arc のCData コネクタからCData CSV Driver を利用するアプローチも選択肢として知っておくと利便性が高まります。

CData Arc はシンプルで拡張性の高いコアフレームワークに、豊富なMFT・EDI・エンタープライズコネクタを備えたパワフルな製品です。CData Drivers との組み合わせで270を超えるアプリケーションへの連携を実現できます。

皆さんのつなぎたいシナリオでぜひ CData Arc を試してみてください。
CData Arc - セキュアなデータ連携とマネージドファイル転送(MFT)

製品を試していただく中で何かご不明な点があれば、テクニカルサポートへお気軽にお問い合わせください。

CData Software Japan - Support Form


この記事では CData Arc™ 2024 - 24.3.9159.0 を利用しています。