PostgreSQL

参考になるページ

インストールについて: Nemunekoさん

PostGISについて: オークニー PostGIS分科会 日本語マニュアル

参考: 石井達夫「PostgreSQL完全攻略ガイド」

全般:

日本PostgreSQLユーザ会


Vine Linux 3.0へのインストールと起動

注: RPMでのインストールは, PostGISなどとの連携がいまいちうまくいかないので、ここではソースから入れる。

必要なライブラリのインストール
	$ sudo apt-get install readline-devel

ユーザーアカウント"postgresql"の作成
	$ sudo useradd postgresql
	$ sudo passwd postgresql
	
インストール先のディレクトリの作成
	$ sudo mkdir /usr/local/pgsql
	$ sudo chown postgres:postgres /usr/local/pgsql
	
ソースのダウンロードと展開/インストール
注: postgresqlは、他のソフトと違い、rootではなくpostgresアカウントでインストールする。
注: 後述のPostGISとの整合性のために、やや古いバージョン(7.2.6)を入れる。
	$ su postgres
	$ cd
	$ wget http://wwwmaster.postgresql.org/redir?ftp%3A%2F%2Fftp.jp.postgresql.org%2Fsrc%2F7.2.6%2Fpostgresql-7.2.6.tar.gz
	$ tar zxvf postgresql-7.2.6.tar.gz
	$ cd postgresql-7.2.6
	$ ./configure
	$ make all
	$ make install

環境変数の設定 (/etc/profileなどに書き込む)
	$ export PG_HOME=/usr/local/pgsql
	$ export PGLIB=$PG_HOME/lib
	$ export PGDATA=$PG_HOME/data
	$ export MANPATH=$MANPATH:$PG_HOME/man
	$ export PATH=$PATH:/usr/local/pgsql/bin/

データベースクラスタの初期化
	$ initdb
(Ubuntu 6.10では、/usr/lib/postgresql/8.2/bin/initdbにある。デフォルトではパスは通っていない。)

サーバーの起動
	$ pg_ctl status

一般ユーザーの登録
	$ createuser nishida

データベースの初期化 (実行はpostgresアカウントでも、nishidaアカウントでもよい)
	$ createdb testgis

コマンドの基本

 コマンドは --helpでヘルプを表示。
 create...で作成、drop...で削除。

	$ createuser nishida     # データベースのユーザー"nishida"を登録。
	$ dropuser nishida       # データベースのユーザー"nishida"を抹消

データベースクラスタ
  データベースクラスタは、もろもろのデータベースを一括管理するディレクトリ。
  データベースクラスタのパスは、PGDATAという環境変数で設定する。
  Linuxの一般ユーザーも独自にデータベースクラスタを作成できる。
  データベースクラスタ1つに、postmasterというデーモン?ひとつが対応する。
  postmasterを起動するのは、データベースクラスタを作ったユーザー。
	$ initdb --no-locale --encoding=EUC_JP  # データベースクラスタを作る。
	$ pg_ctl status          # postmasterが動いているかどうか知る。
	$ pg_ctl -w start        # postmasterを起動する。
	$ pg_ctl stop            # postmasterを停止する。

データベース
	$ createdb instrument    # データベース"instrument"を作成
	$ dropdb instrument      # データベース"instrument"を削除
	$ psql -l                # 既存のデータベースのリストを表示
	$ psql instrumnet        # データベース"instrument"に対してSQL文のコマンド待機(プロンプト)に入る。
	$ psql -f test.sql instrument  # データベース"instrument"に対して, ファイルtest.sql記述したSQL文を実行する。

SQLコマンド
  SQLコマンドプロンプトでは、「SQLコマンド」と、「バックスラッシュコマンド」の2通りのコマンドを使う。
	# \q			                                   # 脱出
	# create table shinamono (hinmei text, nedan int);         # tableを作成
	# \d shinamono                                             # table "shinamono"の構造をみる。
	# insert into shinamono values ('みかん', 100);            # データ登録
	# select * from shinamono;                                 # table "shinamono"のデータをぜんぶ表示。	
	# select hinmei as 品名, nedan as 値段  from shinamono;    # アトリビュートの表示名を設定してデータを表示
	# update shinamono set nedan=10 where hinmei='みかん';     # データを変更
	# delete from shinamono where hinmei='みかん';             # データを削除
	# \copy shinamono from ./in.dat	                           # テキストファイル"in.dat"(タブ区切り)から、table "shinamono"にインポート(追記)
	# \copy shinamono to ./out.dat                             # テキストファイル"out.dat"に、table "shinamono"からエクスポート
	# \h                                                       # SQLコマンドのリスト
	# \h execute                                               # SQLコマンド"execute"のヘルプを表示
	# \?                                                       # バックスラッシュコマンドのリストとヘルプ
	# select * from instrument where maker='Li-Cor';           # "maker"カラムが"Li-Cor"であるようなデータを表示
	# select * from instrument join company on instrument.vendor=company.name;   # instrumentのvendor情報に、companyテーブルから(nameをキーにして)情報を追加表示。
	

PostGIS

インストール (参考):
	$ su postgresql
	$ cd ~/postgresql-7.2.6/contrib/
	$ wget http://postgis.refractions.net/postgis-0.7.3.tar.gz
	$ tar zxvf postgis-0.7.3.tar.gz	
	$ cd postgis-0.7.3
	$ make
	$ make install
	
PostGIS用のデータベースを作る (参考):
	$ createdb testgis
	$ createlang plpgsql testgis
	$ psql -d testgis -f /usr/local/pgsql/share/contrib/postgis.sql
	$ psql -d testgis -f /usr/local/pgsql/share/contrib/spatial_ref_sys.sql
	
もしここで大量のエラーが出てきたら、Makefileの中で、
	USE_PROJ=0
	USE_PG72=1
として、PostGISを再度コンパイル。

うまくできているかテスト (参考):
	$ psql testgis
	# CREATE TABLE gtest ( ID int4, NAME varchar(20) );
	# SELECT AddGeometryColumn('testgis','gtest','geom',-1,'LINESTRING',2);