コンテンツにスキップ
「プリザンター入門」発売中!

プリザンターから外部DBのテーブルを参照したい

回答

データベースがSQLServerの場合は「リンクサーバー」機能、PostgreSQLの場合は「FDW」機能であらかじめ別DBにアクセスできる状態にしたうえで、拡張SQLを使用します。


概要

拡張SQLの「OnSelectingColumn」を使用しプリザンターから外部DBのテーブルを参照するサンプルコードです。参照したい外部DBをSQL Serverの「リンクサーバー」機能を使って参照します。

前提条件

  1. 事前にリンクサーバの設定が完了している必要があります。
    SQL Serverの場合はリンクサーバ機能を利用します。PostgreSQLの場合は「FDW」機能を利用します。
    リンク サーバー (データベース エンジン) - SQL Server | Microsoft Learn
    F.33. postgres_fdw

説明

プリザンターから参照する外部DBのテーブル例です。

id 氏名 年齢
1 ユーザー1 21
  1. プリザンターのテーブルの分類Aに外部DBテーブルの id が格納されていることとします。
  2. 外部DBテーブルの 年齢 をプリザンターの 分類Z に表示します。

操作手順

テーブルの設定

  1. プリザンターを開き、テーブルを作成してください。
  2. テーブルの管理を開き一覧タブとエディタタブで「分類Z」を有効化してください。
  3. 対象となるテーブルのサイトIDをメモしてください。

拡張SQLの設定

  1. 後述のJSONファイル例を LinkSever.json として保存してください
  2. 保存先は以下の通りです。
  3. C:\web\pleasanter\Implem.Pleasanter\App_Data\Parameters\ExtendedSqls\LinkServer.json

  4. SiteIdList をメモしたサイトIDに変更してください。

  5. CommandText のSQLのFROM句: [リンクサーバー名].[DB名].[スキーマ名].[テーブル名] [照合順序]は設定したいリンクサーバーと、参照したいテーブル名に変更してください。
  6. プリザンターを再起動してください。

サンプルコード

本サンプルコードはSQLSever用です。

JSON(LinkServer.json)
{
    "Name": "LinkServerTest",
    "Description": "LinkServerTest",
    "SiteIdList": [xxx],
    "ColumnList": ["ClassZ"],
    "OnSelectingColumn": true,
    "CommandText": "(select age from [LINKSERVER].[postgres].[public].[staff] where id = Results.ClassA COLLATE Japanese_CI_AS)"
}

関連情報