DBトリガーでCSV連携

HOME技術コラムDBトリガーでCSV連携

DBテーブルのステータスカラム値をトリガーに、
レコード情報をCSVファイルに出力する

1. 処理仕様説明

DataSpiderではトリガー機能によって、トリガーを発火させてスクリプトを実行することが可能です。
今回はDBトリガーでDBの監視対象テーブルのステータスカラムに、特定の値が格納されていることをトリガーとして、対象のレコード情報をCSVファイルに出力する方法を説明します。

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

トリガー発火
  • productsテーブルのdataspider_statusカラムの値が「1」「2」「3」いずれかの場合にトリガー発火
書き込み
  • トリガー発火時に連携される対象のレコード情報を「/data/work/test/製品申込情報.csv」ファイルに書き込む

2. 前提

・データベースへの接続が済んでいること(今回はPostgreSQL14をデータベースとして使用)
・監視対象テーブルにDataSpiderから監視するステータスカラムがINTEGER型で用意されていること
・DataSpiderファイルシステム上に連携先のCSVファイル格納フォルダが作成されていること

今回使用する監視対象のテーブル構造は以下の通りです。
監視対象テーブルの構造

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

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

[プロジェクト名]:DB-CSV連携(任意)
[スクリプト名]:DBトリガー起動(任意)
新規プロジェクト プロジェクト作成

4. DBトリガー発火時のレコード情報取得設定

DBトリガーはXML型のスクリプト入力変数にレコード情報を代入します。
※実行スクリプトの最上位のスクリプト変数に代入されるため、最上位にXML型のスクリプト入力変数の設定が必要です。

また、Mapper内で扱う場合にはスキーマの読み込みが必要となります。

【4-1】
プロジェクトエクスプローラから対象スクリプトを右クリックし、「新規作成」-「スクリプト変数」を選択します。
「新規作成」-「スクリプト変数」

「新規スクリプト変数」プロパティ設定ダイアログで、以下の通り設定を行います。

[変数名] : record_info(任意)
[変数型] : XML型
[スクリプトを入力変数として使用する]にチェックを入れます。
「新規作成」-「スクリプト変数」

[完了]を押下するとプロパティ設定ダイアログが閉じ、「record_info」スクリプト変数が作成されます。
「record_info」スクリプト変数が作成

【4-2】
ツールパレットから「データベース」-「PostgreSQL」-「テーブル読み取り」をスクリプトキャンバスにドラッグ&ドロップします。
「データベース」-「PostgreSQL」-「テーブル読み取り」

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

[名前] : get_table_data(任意)
[接続先] : PostgreSQL 14接続設定
[テーブル名] : dataspider.products
「新規テーブル読み取り処理」プロパティ設定ダイアログ

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

【4-3】
ツールパレットから「変換」-「基本」-「マッピング」をスクリプトキャンバスにドラッグ&ドロップします。
スクリプトキャンバスにドラッグ&ドロップ

配置された「mapping」アイコンと「Start」アイコンの間に、プロセスフローとデータフローを引きます。
「mapping」アイコンと「Start」アイコンの間に、プロセスフローとデータフローを引く

「mapping」アイコンをダブルクリックし、Mapperエディタを開きます。
入力データにスクリプト変数の「record_info」があることを確認します。
入力データにスクリプト変数の「record_info」があることを確認

「record_info」を右クリックし、「スキーマの読み込み」を選択します。
「record_info」を右クリックし、「スキーマの読み込み」を選択

「スキーマの読み込み」プロパティ設定ダイアログが表示されるので、[コンポーネントから選択]から「get_table_data」を選択します。
[コンポーネントから選択]から「get_table_data」を選択

[完了]を押下するとプロパティ設定ダイアログが閉じ、「record_info」配下にテーブルのカラム名がスキーマとして設定されます。
「record_info」配下にテーブルのカラム名がスキーマとして設定
「get_table_data」を削除します。
削除
以上でDBトリガー発火時のレコード情報取得設定の完成です。

5. CSVファイルへのデータ書き込み設定

【5-1】
ツールパレットから「ファイル」-「CSV」-「CSVファイル書き込み」をスクリプトキャンバスにドラッグ&ドロップします。
「ファイル」-「CSV」-「CSVファイル書き込み」をスクリプトキャンバスにドラッグ&ドロップ

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

[名前] : csv_write(任意)
[入力データ] : mapping
[ファイル] : /data/work/test/製品申込情報.csv
[デリミタモード] : 一覧から選択
[デリミタ文字] : 半角カンマ
[列一覧] : 「追加」から列名を追加
[クォーテーション]にチェック
「新規CSVファイル書き込み処理」プロパティ設定ダイアログ

次に、「書き込み設定」タブを選択し、以下の通り設定を行います。
[エンコード] : Windows-31J
[改行コード] : CR+LF
[上書き]、[追加書き込み]、[1行目に列名を挿入]、[ファイルが存在する場合は列名を挿入しない]にチェックを入れます。
「書き込み設定」タブ

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

【5-2】
「mapping」アイコンをダブルクリックし、Mapperエディタを開きます。
必要なマッピングがされていることを確認します。
Mapperエディタ
以上でCSVファイルのデータ書き込み設定の完了です。

6. スクリプトの完成とサーバーへの登録

【6-1】
処理の順番にプロセスフローを引きます。
(「Start」→「mapping」→「csv_write」→「End」の順)
完成したスクリプトのプロセスフロー

【6-2】
[プロジェクトの保存]を押下してプロジェクトを保存します。
[プロジェクトの保存]を押下してプロジェクトを保存

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

[サービス名]の値を指定して [完了]を押下します。
サービス名の指定ダイアログ

「サービスの登録」ダイアログが表示されるので、[OK]を押下します。
サービスの登録 確認ダイアログ
以上でスクリプトの完成とサーバーへの登録が完了です。

7. DBトリガーの作成

「マイ トリガー」の「マイ トリガーのタスク」で[新しいDBトリガーを作成する]を押下します。
新しいDBトリガーを作成するボタン

「DBトリガー」プロパティ設定ダイアログが表示されるので、以下の通り設定を行い[次へ]を押下します。

[トリガー名] : DBトリガー(DB-CSV連携)(任意)
[接続] : PostgreSQL 14接続設定
[監視テーブル] : "dataSpider"."products"
[ステータスカラム] : "dataSpider_status"
[監視イベント] : 「挿入時」「更新時」「削除時」にチェック
[ステータス値] :
 0 : [未変更状態]
 1 : [挿入時トリガー待ち状態]
 2 : [更新時トリガー待ち状態]
 3 : [削除時トリガー待ち状態]
 4 : [削除状態]

DBトリガーのプロパティ設定ダイアログ

トリガー発火時に実行されるスクリプトを設定します。
[サービス] : DB-CSV連携
[スクリプト] : DBトリガー起動
トリガー発火時に実行されるスクリプトを設定

[完了]を押下すると、「トリガー有効の確認」ダイアログが表示されるので、[はい]を押下します。
※[いいえ]を押下するとトリガーが無効状態で登録されます。
トリガー有効の確認ダイアログ

「マイ トリガー」から設定したDBトリガーが表示されていることを確認します。
マイ トリガーに登録されたDBトリガー
以上でDBトリガーの作成は完了です。

8. DBトリガーの発火確認

【挿入時トリガー待ち状態のステータス】
エクスプローラで、出力先の「/data/work/test/製品申込情報.csv」を確認します。
/data/work/test/製品申込情報.csv

監視対象のテーブルに、ステータスカラムが「1」となるようにレコードをINSERTします。
テーブルブラウザ
テーブルブラウザ
テーブルブラウザ

すると、DBトリガーの発生条件を満たしたため、DBトリガーが発火し、
サービス「DB-CSV連携」のスクリプト「DBトリガー起動」が実行されます。

実行結果が正常終了していることや「/data/work/test/製品申込情報.csv」が出力されていることを確認します。
正常終了
製品申込情報.csvが選択されている

また、DBトリガーでの発火のため、監視対象テーブルのステータスカラムが「0」に更新されていることを確認します。
ステータスカラムが「0」に更新されている

【更新時トリガー待ち状態のステータス】
エクスプローラで、出力先の「/data/work/test/製品申込情報.csv」を確認します。
「/data/work/test/製品申込情報.csv」を確認

監視対象のテーブルに、ステータスカラムが「2」となるようにレコードをUPDATEします。
ステータスカラムが「2」となるようにレコードをUPDATE
ステータスカラムが「2」となるようにレコードをUPDATE
ステータスカラムが「2」となるようにレコードをUPDATE

すると、DBトリガーの発生条件を満たしたため、DBトリガーが発火し、
サービス「DB-CSV連携」のスクリプト「DBトリガー起動」が実行されます。

実行結果が正常終了していることや「/data/work/test/製品申込情報.csv」に追記されていることを確認します。
実行結果が正常終了
「/data/work/test/製品申込情報.csv」に追記されている

また、DBトリガーでの発火のため、監視対象テーブルのステータスカラムが「0」に更新されていることを確認します。
監視対象テーブルのステータスカラムが「0」に更新されている

【削除時トリガー待ち状態のステータス】
エクスプローラで、出力先の「/data/work/test/製品申込情報.csv」を確認します。
「/data/work/test/製品申込情報.csv」を確認

監視対象のテーブルにステータスカラムが「3」となるようにレコードをUPDATEします。
テーブルブラウザ
ステータスカラムが「3」となるようにレコードをUPDATE
テーブルブラウザ

すると、DBトリガーの発生条件を満たしたため、DBトリガーが発火し、
サービス「DB-CSV連携」のスクリプト「DBトリガー起動」が実行されます。
実行結果が正常終了していることや「/data/work/test/製品申込情報.csv」に追記されていることを確認します。
実行結果の確認
CSVファイルへの追記を確認

また、DBトリガーでの発火のため、監視対象テーブルのステータスカラムが「4」に更新されていることを確認します。
監視対象テーブルのステータスカラムが「4」に更新されている

以上が、DBトリガーによるDBの監視対象テーブルのステータスカラムに、特定の値が格納されていることをトリガーとして、対象のレコード情報をCSVファイルに出力する方法の説明になります。

お問い合わせ

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

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

top