プリザンターから外部DBのテーブルを参照したい
回答¶
データベースがSQLServerの場合は「リンクサーバー」機能、PostgreSQLの場合は「FDW」機能であらかじめ別DBにアクセスできる状態にしたうえで、拡張SQLを使用します。
概要¶
拡張SQLの「OnSelectingColumn」を使用しプリザンターから外部DBのテーブルを参照するサンプルコードです。参照したい外部DBをSQL Serverの「リンクサーバー」機能を使って参照します。
前提条件¶
- 事前にリンクサーバの設定が完了している必要があります。
SQL Serverの場合はリンクサーバ機能を利用します。PostgreSQLの場合は「FDW」機能を利用します。
リンク サーバー (データベース エンジン) - SQL Server | Microsoft Learn
F.33. postgres_fdw
説明¶
プリザンターから参照する外部DBのテーブル例です。
| id | 氏名 | 年齢 |
|---|---|---|
| 1 | ユーザー1 | 21 |
- プリザンターのテーブルの分類Aに外部DBテーブルの id が格納されていることとします。
- 外部DBテーブルの 年齢 をプリザンターの 分類Z に表示します。
操作手順¶
テーブルの設定¶
拡張SQLの設定¶
- 後述のJSONファイル例を LinkSever.json として保存してください
- 保存先は以下の通りです。
-
C:\web\pleasanter\Implem.Pleasanter\App_Data\Parameters\ExtendedSqls\LinkServer.json
-
SiteIdList をメモしたサイトIDに変更してください。
- CommandText のSQLのFROM句: [リンクサーバー名].[DB名].[スキーマ名].[テーブル名] [照合順序]は設定したいリンクサーバーと、参照したいテーブル名に変更してください。
- プリザンターを再起動してください。
サンプルコード¶
本サンプルコードは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)"
}
