3
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

プリザンターの記録テーブルに直接データをクエリで書き込む

3
Posted at

はじめに

プリザンターは柔軟な拡張性を持つオープンソースのWebデータベースであり、内部的には多くのテーブル構造を持っています。その中でも、本記事では記録テーブルのデータ追加に限定し、SQL Server上で直接データを書き込む方法について解説します。

本記事で説明しないこと
通常、プリザンターは各項目ごとに履歴管理機能を持ち、更新履歴を追跡できる設計となっています。この履歴はhistoryやdeletedテーブルに情報が格納されます。
今回はその履歴管理やバージョン制御の仕組みを利用せず、新規レコードを直接追加するシンプルなケースに絞って説明します。

記録テーブルの構造について

記録テーブルはItemsテーブルとResultsテーブルの2つで構成されています。
SiteIdはプリザンターのテーブルを作成したIDになります。

テーブル構造のイメージ

SiteIdの確認方法

SiteIdはプリザンターで記録テーブルを開いたitemsの次にある数値となります。
以下のURLの場合サイトIDは10199となります。

https://localhost/items/10199/index

テーブルの説明

Itemsテーブル

Itemsテーブルの登録方法ですが、値(サンプル)が必要な項目となります。
FullText列はフルテキストインデックスの文字列を格納している(と思われる)のでテーブル名から列の値の全てが格納されています。

# 列名 値(サンプル)
1 ReferenceId 連番
2 Ver 1
3 ReferenceType Results
4 SiteId サイトID
5 Title タイトル無し
6 FullText 記録テーブル ※1
7 SearchIndexCreatedTime タイムスタンプ
8 Comments null
9 Creator 1
10 Updator 1
11 CreatedTime タイムスタンプ
12 UpdatedTime タイムスタンプ

Resultsテーブル

Resultsテーブルは実際に記録テーブルに格納されたデータが格納されています。
ReferenceIdはResultIdとイコールにする必要があります。

# 列名 値(サンプル)
1 SiteId サイトID
2 UpdatedTime タイムスタンプ
3 ResultId ItemsテーブルのResultId
4 Ver 1
5 Creator 1
6 Updator 1
7 CreatedTime タイムスタンプ

まとめ

本記事では、プリザンターの記録テーブル(ItemsテーブルおよびResultsテーブル)に対し、履歴管理やバージョン制御を経由せず、SQL Server上から直接データを追加する方法について解説しました。
内部構造や必須カラム、SiteIdの取得方法、ReferenceTypeの固定値、そして両テーブル間の関連性を理解することで、アプリケーション層を経由せずにデータを投入する際のポイントを押さえることができます。

この手法は履歴管理やバージョン制御の仕組みを経由しないため、データ追加処理をシンプルかつ効率的に行える点が特徴です。用途や要件に応じて、開発・検証環境で十分に確認を行えば、本番運用でも柔軟なデータ投入方法として活用できる可能性があります。

3
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?