PostgreSQL13 (Debian11.3.0)
2022/6/17
インストール
PostgreSQL本体の他に
- JDBCドライバ
- 埋め込みSQL用ライブラリ+ヘッダ
- libpq関連ライブラリ+ヘッダ
をインストールする。
#管理者権限で実行
apt install -y postgresql-13 postgresql-server-dev-13 libpostgresql-jdbc-java libpostgresql-jdbc-java-doc libpqxx-6.4 libpqxx-dev libpqxx-doc libpq-dev libpq5 libecpg-dev libecpg6 libreoffice-base libreoffice-sdbc-postgresql
PostgreSQLへのアクセスの範囲を指定
#/etc/postgresql/13/main/postgresql.conf
#listen_addresses = 'localhost' # what IP address(es) to listen on;
listen_addresses = '*' #localhostを*に修正
よろしくないのだが、実験室から接続するだけなので
#/etc/postgresql/13/main/pg_hba.conf
#local all all peer ; peerをtrustに修正
local all all trust
host local all all 192.168.xx.xx/xx trust
設定を変更したのでpostgresqlを再起動
#postgresqlを再起動
systemctl restart postgresql
データベースユーザを登録
データベース管理者でログインし、データベースの使用者を登録する。
データベースユーザの権限は
- -d 新しいデータベースを作成できる
- これ以外はデフォルト
ログイン可能 新しいロールは作成不可 スーパーユーザではない
にする。
#データベース管理者postgresが実行
su - postgres
createuser -d 18000
createuser -d 19000
createuser -d 20000
データベースユーザ(開発者)
データベースユーザ(開発者)は自分用のデータベースをつくり、SQLでデータ操作ができる。
#一般人が自分のユーザ権限で実行
#ユーザ18000でログイン
#データベースを新規作成
#データベース名は任意でよい デフォルトはユーザ名
#いくつかのアプリは「データベース名は文字列に限定」みたいな制限があるので注意
createdb db18000
#データベースをつかう
psql db18000
create table sample(tel int,name varchar(50));
insert into sample values(6547,'情報通信実験室');
insert into sample values(6447,'高橋研究室');
SELECT * FROM sample;
\q
#\qでデータベースを終了
LibreOffice(Base)でPostgreSQLを使う ===SDBCドライバ===
以前、LibreOffice-BASEでPostgerSQLに接続する方法はJDBCドライバを使った接続だった。このごろはJDBCドライバではなくSDBCドライバを使うらしい。
SDBC:Star Database Connectivity
- Libreoffice-Baseを起動

- LibreOfficeデータベースウィザードへようこそ
「既存のデータベースに接続」、プルダウンメニュー中からPostgreSQLを選ぶ。

- データソースを指定する。
自分のPCを指定する場合はhost=...を省略できる。dbnameはさきほどつくったデータベースを指定する。

- ユーザ名は自分
をクリックして、データーベースに接続できることを確認する。

- 接続できた。

- 次回からこのデーターベースを使用するので、接続に関するアレコレを保存する。
なお、データの更新(挿入、削除、修正)はデータベースの仕事であり、Baseが保存しているわけではないので、勘違いしないように注意する。

- 名前をつけて保存する。拡張子はodbにする。

- データベースに接続したのでアレコレ表示される。
これらはデータベース内部の情報ので一般人は触らないのが吉。

- 自由に使えるのはpublic以下と思うこと。(いろいろわかってくるとinformation_schemaやpg_catalogが使えるようになる。)
最初につくったテーブル(sample)がある。これを開いてみよう。

- さきほどの中身が見えた。自分のデータベースだから好きに使える。追加、変更、削除等試してみよう。
ただし、1件はレコードを残すこと。

- 好き勝手したと思うので、「SQL表示でクエリーを作成...」を試す。
データベース標準語がわからない方にはここでお引き取り願おう。

- 簡単なSELECT文を実行する。さきほどいろいろイジったと思うので、適宜SELECT文の内容は修正してほしい。

- SELECT文はクエリー1として保存する。(テキトウな名前で保存してよい)

- クエリー1を実行する。
SELECT文を実行した結果が出てくる。

C言語でPostgreSQLを使う ===埋め込みSQL===
埋め込みSQLによりテーブルsampleにアクセスする。
プリコンパイラはsample1.pgcからsample1.cを生成する。
コンパイルオプションとしてsample1.c中のECPG....関数を使用するためのインクルードパス(/usr/include/postgresql)とライブラリ(-lecpg)を指定する。
| sample1.pgc | 実行 |
|
 |
C言語でPostgreSQLを使う ===libpqライブラリ===
libpq-Cライブラリ 33.21.サンプルプログラム(testlibpq.c C言語PostgreSQLフロントエンドライブラリlibpqの試験)を参考にテーブルsampleにアクセスする。
コンパイルオプションとしてsample2.c中の"libpq-fe.h"を使用するためのインクルードパス(/usr/include/postgresql)、PQ....関数を使用するためのインクルードパス(/usr/include/postgresql/13/server)、ライブラリ(-lpq)を指定する。
| sample2.c | 実行 |
|
 |
SDBC Apache OpenOffice Wiki(
https://wiki.openoffice.org/wiki/JA/Documentation/BASIC_Guide/Database)
PostgreSQL 13.1文書 第33章 libpq-Cライブラリ 33.21.サンプルプログラム
(https://www.postgresql.jp/document/13/html/libpq-example.html)