postgresqlの起動は・・・

2010/09/05 | PostgreSQL

NTTPC Communicationsが提供するWebARENAのVPSを追加契約した(現在3台目)。ここのVPSは基本的にまず落ちない。過去5年くらい使っているけど、落ちたのはメンテナンスの時だけ(もちろん事前のアナウンスあり)。だからミッションクリティカルな案件の時は必ずこのVPSを使うことにしている(サポートも悪くないし)。

そのサーバではMySQLでサービスを構築するはずだったのだが、急遽PostgreSQLを別件で使用することになった。早速使おうと思って、initdbコマンドを発行しようとしたところ、コマンドが見当たらない。「あれっ」と思って、/etc/rc.d/init.d/以下のPostgreSQLの起動コマンドを探したけど、それも見つからない。なぜだ。

いちおうデフォルトでPostgreSQLも使えることになっているのだが「もしやインストールされていないのでは」と思ってrpmコマンドで確認してみた。

  • postgresql
  • postgresql-libs

入っているけど・・・、これでよかったっけか。普段使っていないので、いいか悪いかもわからない。ちょっとウェブで調べてみたら・・・。ない。postgresql-serverがない!。

yumコマンドで早速インストール。これでinitdbコマンドも起動コマンドもインストールされた。初期状態じゃ、使えないんじゃん。

PostGISにはFedoraが簡単

2009/10/05 | PostgreSQL

CentOSにPostGISをインストールする際にはいろいろ試行錯誤があった。いろんなところのRPMをとっかえひっかえインストールして動作確認し、やっとの思いでインストールすることができた。

今日、諸般の理由でFedoraCoreなサーバを準備することになり、ちょっとびっくりした(使用したのはFedoraCore8)。標準のリポジトリでPostGISが用意されているのだ。

FedoraCoreはその昔、RedHatから分家したとき、「最新を追い求める」という位置づけだったのでサーバには適さないと思い、FedoraCore3あたりから遠ざかっていた。当時はRedHatの無償型ということでCentOS(これは今やサーバ用ディストリビューションとしては主流)やWhiteBox Linuxを主に使っていた(といっても、いずれもパッケージ管理システム等々ほぼ同じ構成なので特段迷うこともないのだけれど)。今でもよほどの理由がない限り、FedoraCoreを使おうと思わないが、使いたくなる理由ができてしまった。なんといってもyumコマンド一発でPostGIS(もちろん関連するパッケージも全て)をインストールしてくれるからだ。

まぁ、FedoraCoreの寿命の短さは今でも変わらないだろうから早々簡単には使えないけれど、インストールに悩まなくていい点は選択肢の一つに入れる大きな理由になりそうだ。

PostgreSQLのバックアップ

2009/09/26 | PostgreSQL

普段使わないので、失念することも多いので、メモしておく。

pg_dump  -d database | /bin/gzip > dump.gz

-dオプションでCOPYコマンドではなく、INSERTコマンドの形式にする。
パイプ処理でgzipし、出力先ファイル名にリダイレクト。

-dよりも-Dのほうがいいかも(-Dはカラム名も含めてくれる)。

PostGISなデータをSELECTしてみる

2009/09/06 | PostgreSQL

さて、今度はPostGISなデータをSELECTしてみる。まず単純に「SELECT * FROM table;」なんてしてみたら位置データの入っているカラムには長い文字列が入っていた。

0101000020E61000000000000000E060400000000000804140

え、何これ。どうやって解釈するの。でも、きっと解釈する関数があるはず、と思って調べたらありました。

SELECT AsText(column) FROM table;

これでちゃんと目で見て判る形式で出力されました。

POINT(135 35)

PostGISを使うには、やっぱり関数郡には一通り目を通しておく必要がありそうだ。

ちなみに経度と緯度それぞれに分けて表示させるにはX関数、Y関数を使うとのこと。

SELECT X(column),Y(column) FROM table;

こっちのほうが使いやすいかな。

PostGISなデータを実際にINSERTしてみた

2009/09/05 | PostgreSQL

PostGISなデータをINSERTする方法は「GeomFromText」という関数を使うことは前にもメモした。試しに、実際のデータベースにINSERTしようとしてみたらうまくいかない。エラーが出る。こんな感じ。

ERROR:  parse error – invalid geometry
CONTEXT:  SQL function “geomfromtext” statement 1
********** エラー **********
ERROR: parse error – invalid geometry
SQLステート:XX000
コンテキスト:SQL function “geomfromtext” statement 1

とりあえずエラーの意味がよくわからなかった(後々考えてみれば「geomfromtextの第1引数だよ」といっていることに気づいた・・・メッセージ読めよって感じ)。

なぜ、と思ってよく見てみたら関数の第1引数を以下のように指定していたことが原因だった。

‘POINT(135,35)’

なんのことはない。経度と緯度を「,(カンマ)」で区切るのは間違い。スペースだった。

‘POINT(135 35)’

でけた。

守谷市(まちの情報ポータル) 無料アンケートレンタルjpForm.net