DB連携 ①スプリクト作成編

HOME技術コラムDB連携①スプリクト作成編

Excelファイルが対象フォルダに配置されたことをトリガーに
Excelの中身をDBに連携する

DB連携

①スプリクト作成編

処理仕様説明

DataSpiderではトリガー機能によって、トリガーを発火させてスクリプトを実行することが可能です。
今回はファイルトリガーで監視対象となるExcelファイルが配置されたことをトリガーに、Excelのデータを読み取り、読み取ったデータを加工してPostgreSQLデータベースに書き込む方法を説明します。

処理フローと処理内容は以下の通りです。

トリガー発火
  • 「/data/work/test/filetrigger.xlsx」が配置された際にトリガー発火
読み取り
  • Excelブック「/data/work/売上データ.xlsx」のシート「売上データ」からデータを読み取る。
  • シートの1行目はヘッダ情報のため読み取らない
変換
  • 読み取ったデータ1行ごとに「注文数」と「単価」を掛け合わせ、注文金額を算出する
  • PostgreSQLデータベース「test1」のテーブル「test.testdb」にデータを書き込む
書き込み
  • PostgreSQLデータベース「test1」のテーブル「test.testdb」にデータを書き込む
  • 変換したデータとテーブルの行を突き合わせ、キー「製品コード」に一致する場合は更新、しない場合は挿入

前提

・データベースへの接続が済んでいること(今回はPostgresSQL13をデータベースとして使用)
・データ連携元のExcelファイルがDataSpiderファイルシステム上に配置されていること

今回連携したExcelブック「/data/work/売上データ.xlsx」のシート「売上データ」の内容は以下の通りです。

プロジェクトとスクリプトの作成

トリガー発火により実行するプロジェクト、スクリプトを新規に作成します。

[プロジェクト名]:ExcelDB連携(任意)
[スクリプト]:Excel2DB(任意)


Excelブックからのデータ抽出

ツールパレットから「ファイル」-「Excel」-「シートから読み取り」をスクリプトキャンバスにドラッグ&ドロップします。

「新規シートから読み取り処理」プロパティ設定ダイアログで、以下の通り設定を行います。

[名前] :Excel読み取り処理(任意)
[ファイル] :「/data/work/売上データ.xlsx」
[シート名] : 売上データ
[列一覧の更新]を押下し、 [列一覧]を自動生成します。

次に、「読み取り設定」タブを選択します。
シートの1行目はヘッダ情報であるため、[最初の行は値として取得しない]にチェックを入れます。

[完了]を押下すると、プロパティ設定ダイアログが閉じ、「Excel読み取り処理」アイコンがキャンパスに配置されます。

以上でExcelからのデータ読み取りは完了です。


PostgreSQLデータベースへのデータ書き込み

ツールパレットから「データベース」-「PostgreSQL」-「テーブル書き込み」をスクリプトキャンバスにドラッグ&ドロップします。


「新規テーブル書き込み処理」プロパティ設定ダイアログで、以下の通り設定を行います。

[名前] :PostgreSQL書き込み処理(任意)
[入力データ] :Excel読み取り処理
[接続先] : PostgreSQL13接続設定
[テーブル名] :test.testdb

[キーと値と一致する行は更新]にチェックを入れ、[スキーマ定義]で[列名]が「製品コード」の行の[キー]にチェックを入れます。

[完了]を押下すると、プロパティ設定ダイアログが閉じ、「PostgreSQL書き込み処理」アイコンがキャンパスに配置されます。


Excelデータ連携前の「test.testdb」テーブルの中身を確認します。
「PostgreSQL書き込み処理」アイコンをダブルクリック、またプロパティ設定ダイアログで[テーブルブラウザの起動]を押下し、テーブルブラウザを開きます。

「テーブル一覧」で「test.testdb」を選択、また右ペインの「テーブル内容」タブを押下して、テーブル内のレコードを表示します。

Excelデータ連携前の「test.testdb」テーブルに、何もデータが入っていないことが確認できました。


データのマッピング

Mapperを追加し、「注文個数と単価から注文金額を求める」という演算を行います。

データフローを右クリックし、メニューから「マッピングの追加」を選択します。

Excel読み取り処理と PostgreSQL 書き込み処理の間にドキュメントMapper が配置されます。

配置された「mapping」アイコンをダブルクリックし、Mapperエディタを開きます。

注文金額の計算を行うマッピング定義を作成します。
Mapper エディタのツールパレットから「数値」-「演算」-「掛け算」をマッピングキャンバスにドラッグ&ドロップします。

次に、マッピングリンクを作成します。
「注文数」、「単価」をそれぞれ掛け算ロジックアイコンにマッピングリンクを引きます。
また、掛け算ロジックアイコンを出力データの「注文金額」にマッピングリンクを引きます。

以上でマッピングの完成です。


スクリプトの完成・実行

処理の順番にプロセスフローを引きます。
(「Start」→「Excel読み取り処理」→「mapping」→「PostgreSQL書き込み処理」→「End」の順)

[デバッグ実行の開始/再開] を押下して処理を実行します。

出力データがPostgreSQLに書き込まれているか確認します。

また、連携した「/data/work/売上データ.xlsx」のシート「売上データ」の内容と差異が無いか、注文金額のマッピングで計算された金額が正しいかを確認します。


プロジェクトをサーバに登録する

作成したスクリプトをトリガーから呼び出すために、プロジェクトをサービスとして登録します。


[ファイル]メニューの[プロジェクトをサービスとして登録]を選択します。

[サービス名]の値は変更せず、[完了]を押下します。

「サービスの登録」ダイアログが表示されるので、[OK]を押下します。

| ①スプリクト編 | ②トリガー編

お問い合わせ

  • 資料のご請求
  • 製品Q&A
  • 詳細説明希望
  • 製品デモ希望
  • 製品価格
  • その他

何でもお気軽にご質問ください

top