Re:

感銘高き名言は「1%のひらめきがなければ99%の努力は無駄である」(トーマス・エジソン)

カテゴリ:開発 > PostgreSQL

休みの日になると超変則な時間に寝起きする…。

この自由さが最高。



phpPgAdminで型変更しようと思ったら、integerからbooleanへ変更エラーになるんで、どうしたものか?

コマンドラインから変更しようと思ってもエラー。

一切データは入っていないのだが、どうやらboolean型への変更はコツが必要っぽい。


答え:USIGNを使う


> alter table members alter column status type boolean case when status is null then true end ;

とりあえず、値が入っていない場合はnull評価してtrueとかしとく。

すでにレコードが存在して、1とか0とか入っている場合は

> alter table members alter column status type boolean case when status = 1 then true when status = 0 then false end ;

とかで大丈夫なハズです。(結果の分だけwhenを書く)


boolean型へ変更したい時(または逆)は、そんなSQLを実行して対応しないと無理なようでした。

以上。

SELECT currval( 'users_id_seq' ) ;

※※※

少し丁寧に補足しておくと、users_id_seqとゆーのは
例えばusersテーブルを

create table users ( id serial ) ;

として、usersテーブルにidフィールドをserial型でcreate tableした時に生成されるシーケンスuser_id_seqのことです。

※※※

ここ半年以上、MySQLメインで触ってるからPostgreSQL忘れかけてる。

こんな単純なことでさえ。

ちなみに、MySQLの場合は mysql_insert_id() で取得。



あー、MySQLよりPostgreSQLが好き。



でも、PHPからデータベースを扱うときは、PDO使って抽象化して開発します。

プリペアドステートメントなSQL発行により、SQLインジェクションの心配もそう意識せず、安心かなと思っているから。

なんだかんだでエスケープ漏れしたりするからね、人間。

それに、キャッシュが効いた場合の速度向上の恩恵も受けるし。



コーディングルール以上に、如何に生産性を上げるかってところが重要でしょう。



入社当時、何気に我が社の開発に掛けてる点だと思いました。

え?共通ライブラリとかないんですか?

おのおの、案件で機種判別処理作るんだ〜みたいな。



おやすみなさい。

ポスグレでしかGISを扱ったことがありません。

だけど、データベースといったらポスグレが良くないですか?8.3がリリースされてからそんなイメージが強くなりました。

占いを信じるくらいのレベルで、ですけど。

ベンチマーク比較したり、機能的なところを今後詳しくなる予定。


GISを扱う際、まずはGISのデータを準備しなきゃいけません。

国土交通省で提供されているので、位置参照情報ダウンロードサービスからデータをダウンロードします。

年1回の更新ですが、これだけの情報を提供してくれるのは有難い。


これらのデータを全国扱うと、1600万件くらいあります。

データベースへデータを投入するにも一苦労。

そんな大量データを決まったフォーマットで高速にロードしてくれるポスグレのユーティリティが"pg_bulkload"!

大量データの扱いに時間を消費されてる方は、是非導入して欲しいユーティリティ。


1600万件の投入でも数分で終わります(*´Д`*)


その為に、ポスグレでGISを扱うPostGISのインストール・セットアップ、pg_bulkloadのセットアップ、位置情報データのCSV作成が必要ですが。

ポスグレ扱ってる人は

PostGIS
 GISを扱う
pg_bulkload
 データの高速ロード
Ludia
 日本語の全文検索
pgpool
 負荷分散
Slony
 DBの複製(シングルマスタ)
PGCluster
 DBの複製(マルチマスタ)

辺りを触れると、一気に楽しくなります.。゚+.(・∀・)゚+.゚

がんばれドコモ。



今日は、入社2日目でした。

初日から、とあるサイトのプログラムを担当できることになりまして、立ち上がり緩やかに進んでます。

緩やかに・・・というのはある意味では意に反してるところなんですが、入社後すぐという状態なので、例えばプログラムの作成スタイルとか環境とか会社によって違ったり、やっぱりある程度確認して始めなきゃですよね。

プログラムに入ったらそれなりに早いと思うので、来週以降の2週間だと思います。

大型連休挟んでるんで、前倒しで進めておきたいところ。


DBにはPostgreSQLが使えたので良かったです。

ただ、8.3系は使えない(インストールできない)感じです。

しかし、よくよく考えてみると、今回は更新処理が頻繁に起こることもなさそうなので、8系なら良いのかなって思った。

プログラマ気質が強いので、データベースや負荷における知識が低い(´;ω;`)


この辺り、前の会社のサーバ環境がかなり恵まれた位置にあったことと思います。

金掛けてるのは、素人目にも分かった。

1Uサーバ(Xeonデュアルコア、2G〜4Gメモリ、RAID5など)のほか、最近は2U(hp)、IBMのブレードなど。

豚に真珠だったのは目に見えてましたけど・・・。

新人が組むプログラムが非効率な分、サーバスペックで勝負!的なところなんでしょうか。

そんなところでは助かってたんですね。

感謝。



天気悪いのに、明日は前のマンションに行ってガス閉栓の立会いしなきゃ・・・。



午後には遂に!

冷蔵庫と電子レンジが届きます。

この3年間、部屋になかったんですが、適度に自炊始めようと思って一昨日買いました。

料理ができるモテル男になるんです!

理由は不純です(●´ω`●)

PostgreSQL でジオメトリを扱うってことで、PostGIS を以前使ったのですが

そのときから半年くらい経った今、1.3.2 がリリースされているのでインストールしようと作業開始。

# ./configure
# make
# make install

# psql -f lwpostgis.sql [DBNAME]

!!!

psql:lwpostgis.sql:4225: ERROR: could not find function "coveredby" in file "/usr/local/pgsql/lib/liblwgeom.so"

以前は問題なくコミットしたんだけどなぁ〜と、ぐぐる。

どうやら"GEOS"っていうライブラリが必要みたいだ。

確かに coveredby は lwgeom_geos_c.c ソースに。

と言うわけで、GEOS をインストールしてから再度、オプションをつけて

# ./configure --with-geos

以下同じ。

問題解決!



デフォルトの設定でインストールするとライブラリ散らばってファイル見つからないよってエラーが出るかもしれないので、ポスグレインストールしたディレクトリを指定した方が良いかもしれません。

# ./configure --with-geos --with-geos-libdir=/usr/local/pgsql/lib

とか。



眠い。

↑このページのトップヘ