SQLiteには外部キーがない?

2009/11/16 | SQLite

SQLiteには現時点で外部キーはないのか。最近のバージョンではあるらしい。正確に言うと3.6.19から。ただSQLiteのバージョンといっても、SQLiteというデータベースソフトウェアがあるわけではないから、SQLiteを取り扱うためのツール(PHPとかPerlとか)で使用しているライブラリに依存しているのだろう。ということでphpinfo()で確認してみることにした。

一つ目のレンタルサーバではSQLiteの項目そのものがない。あれ。でもpdo_sqliteがあったのでそちらを確認すると3.3.6となっていた。これって多分ダメなんだよね・・・。

次のを確認してみた。SQLiteの項目はあったけど、2.8.17となっている。これって古すぎじゃないの。で、pdo_sqliteを確認するとこちらでは3.2.8となっている。SQLiteのバージョンは3系にはなっているものの外部キーはだめそうだ。

SQLiteはそもそも外部キーを作成するためのSQLを実行すると、エラーも出ずそのまま通ってしまう点がちょっと怖い。コレで大丈夫と思ってバージョンを確かめずにいると痛い目にあう羽目になりそうだ。SQLiteを使う際はバージョン確認は必須だ(他のソフトの場合も当然といえば当然だが深刻度が違う)。

それよりも素のSQLiteとPDO経由のSQLiteでバージョンが違う点には驚いた。個別にコンパイルされるわけだから当然といえば当然なのだが・・・。後者の場合PHPのsqliteコマンドを使うのとPDO経由で使うのとでは当然扱いが違うんだろうなぁ。

SQLiteのインデックス

2009/11/08 | SQLite

普段SQLiteに触れる際はFireFoxのプラグイン「SQLite Manager」を使っている。以前はウェブベースで操作できる「SQLiteManager」(って同じ名前かよ)を使っていた。理由はSQLite2を取り扱うことができたから。あと、仕事で使ってみて、実際に稼動させてしまった環境で使うのに、ダウンロードやら何やらしている間にデータの欠損ができると嫌だったのでダイレクトに処理できるウェブベースな環境がよかったのだが・・・。今となってはSQLiteで納品する可能性はかなり低いし、PHP5な環境が一般的になりSQLite3だけ対応できていればいい。そしてローカルな環境でさえ動けばいい。そういう理由でプラグイン版を使用している。

でもSQLiteを使いこなすにはまだまだ初心者なのでいろいろとわからないことが多い(いや、SQLiteに限らずPHPもデータベース全般に対してもまだまだひよっこであるのだが)。SQLiteのインデックスのことがよくわからない。というかこれってFireFoxのプラグインの機能でインデックスを作成しようとするのが悪いのか(特殊なのか)、いったいどうすればよいのやら。

通常インデックスって「CREATE INDEX …」の構文で作成すればよいはず。ウェブで調べてもSQLiteも同様の書式で作成できると書いてある。実際にそのコマンドでインデックスができることも確認している。

FireFoxのプラグインで作ろうとすると、使用カラムを選択する際に「Ascending」か「Descending」を選ぶことになっている。この意味がわからない。並べ替えのために同じカラムに対して二つのインデックスを作成しなくてはいけないのか、それともまた別の意味なのか。

実際のところ、最大でも1000件くらいのデータしか投入しない予定なので、それほど問題にはならないのだが、イマイチすっきりしない。暇ができたら調べてみようと思うのだが・・・。

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;

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


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