タグ別アーカイブ: PostgreSQL

PostgreSQLとOracleで緯度経度から半径nメートル内検索を実行してみる。

| コメントをどうぞ

昨今では各種データベースで地図情報を扱うジオメトリ型がサポートされています。
今回はその中からPostgreSQL(+ PostGIS)とOracle(+ Oracle Spatial)についてデータベースに保存された緯度経度から半径nメートル内にある対象を検索する方法についてご紹介します。

続きを読む

PostgreSQL セットアップからDBの作成&削除まで

| コメントをどうぞ

いつ「ポスグレ使う」と言われてもウロタエないように少し調べてみました。
今回はインストールとDBを作成および削除する方法について分かったことを記します。
環境はCentOS 6.5です。

セットアップ

# yum postgresql-server

yumpostgresql-serverをインストールすると、依存関係であるpostgresqlpostgresql-libsもインストールされます。

  • postgresql
  • postgresql-libs
  • postgresql-server

サービスを起動しようとしたところ、以下のメッセージが表示されて起動できませんでした。

# service postgresql start
/var/lib/pgsql/data is missing. Use "service postgresql initdb" to initialize the cluster first.

初期化のため、最初にservice postgresql initdbを実行しなければならないようです。
serviceコマンドでinitdbは指定したことが無かったので、どういうことかとrcスクリプトを見てみたところ

# cat /etc/init.d/postgresql

initdb()とcase文にinitdbがありました。(startstopが規定というわけではないんですね。)
納得できたのでメッセージ通りにinitdbを実行し、サービスを起動しました。

# service postgresql initdb
# service postgresql start

ちなみにOS起動時にPostgreSQLのサービスを自動で開始したい場合はchkconfigコマンドで設定できます。

# chkconfig postgresql on

DBの作成と削除

DBの作成と削除はそれぞれ次のコマンドで可能です。

createdb ${DB名}
dropdb ${DB名}

ただし、PostgreSQLではこれらの操作はrootユーザーではできません。rootユーザーで操作しようとすると次のメッセージが表示されました。

createdb: could not connect to database postgres: FATAL:  ユーザ"root"のIdent認証に失敗しました

なのでインストール時に自動で作成されたユーザーpostgresを使用します。

su - postgres

なお、作成されたユーザーとグループは次のコマンドで確認できます。

# id postgres
uid=XX(postgres) gid=XX(postgres) groups=XX(postgres)

コマンドラインによる操作

psqlコマンドでPostgreSQLをコマンドラインで操作できます。

PostgreSQLのバージョンの表示

# psql --version

コマンドのヘルプの表示

# psql --help

DBの一覧

# psql --list

DBへの接続

#psql ${DB名}

接続が成功するとプロンプトが${DB名}=#になり、テーブルの作成や削除、CRUDの実行が可能になります。
以下にDBに接続している状態で使用可能なコマンドの一部を記します。

テーブルの一覧

=# \d

指定したテーブル情報の一覧

=# \d ${テーブル名}

DBからの切断と終了

=# \q