PostgreSQL
動機 SQLiteだけで開発行ってたけど、トランザクションの処理が面倒になってきたのでやっぱりRDBMSを入れることにした。使い慣れたPostgreSQLで。psycopgとのかねあいでバージョンは8.2。 手順 $ sudo port install postgresql82 (略) To use the postgres…
動機 Django使う上でいよいよ運用サーバにアプリケーションを移そうと思ったけど,開発はCygwinでやりたいんでPostgreSQLとの接続ができないと困る. 方法 psycopgのソースを持ってくる.バージョンが1と2の二つあるけど今は2を使った方がいいみたい. 410 G…
PostgreSQL: The world's most advanced open source database いよいよリリースされましたね.新機能の一覧はこんな感じらしいっす. Heap Only Tuples BGWriter Autotuning Asynchronous Commit Spread Checkpoints Synchronous Scan "Var-Varlena" L2 Cac…
動機 ここ数日研究でPostgreSQLと戯れる日々が続いていましたが,いよいよここにきて1台のマシンでPostgreSQLのサーバ/クライアントをする段階から複数のクライアントを持たせてテストする段階になったんで,他のホストから接続できる様に設定しなきゃいけ…
研究でPostgreSQLを使っているのですが,どうもカラム数が増えるとテーブルができないというエラーが出てしまうので調べてみたら 404 - エラー: 404 あらら,250〜1600とは.これはテーブルを別に作らないといけないっぽいですね.めんどくさい.
ローカルで開発しているアプリケーションをクラスタで走らせようと思ってソース移してビルドしていざ実行!と思ったらこんなエラーがでやがった. psql: could not connect to server: No such file or directory Is the server running locally and accepti…
どうselect文書けばいいか知らなかったので,調べてみた. SELECT columns FROM table WHERE value = any(ARRAY_COLUMN) any関数を使えばいいらしい.ただ右辺に関数がくるのが気持ち悪い.やっぱり配列を使うくらいなら別のテーブルを用意した方がいいとい…
こんな感じのコードを書いてみた.ちょっとずつ使えそうな感じがしてきた.サンプルコードをひたすら読むに限る. /** @file test_libpqxx.cpp * @brief this file is test program using libpqxx2.6.9 * @author YAMAGUCHI * @date 2007.12.23 * @attention…
libpqxx(PostgreSQLのC++用ライブラリ)を使ったメモ DownloadPage – libpqxx [pgsql-jp: 28187] Re: char varchar textについて 上記サイトからlibpqxx2.6.9.tar.gzを落としてきて展開しビルド. # tar xzf libpqxx-2.6.9 # ./configure --prefix=/usr # m…
動機 研究に行き詰まってきたので打開策としてRDBMSを導入することにしてみた. 方法 参照 CygwinにPostgreSQLをインストールするところから.これがまたはまりどころが多かった.やっぱりCygwinってWindowsで動いているだけあって結構面倒. Yahoo! GeoCiti…
postgresql.confの設定を書き換えたので再起動しようと思ったらなぜか出来なかった。いろいろ調べてみたが、意外と手こずってしまい苦労した。症状としては # pg_ctl restart postmaster successfully started upとは表示されるものの、実際はps aux | grep …
今回立てたサーバに対する思想の一つとして「Debianの思想にのっとる」というのがあります。と書いてみると大仰ですが、単にaptやdpkgでパッケージを管理したいということです。*1 で、今回やりたかったのはRubyとPostgreSQLをつなぐruby-postgresというモジ…
諸々のディレクトリはpg_configコマンドで調べることができます。 インクルードディレクトリ --includedir ライブラリディレクトリ --libdir など。詳しくはヘルプ参照。
ひさびさの投稿なので体裁を忘れていた。いかんいかん。 ある日付型のカラムを見たときに、月ごとに区切りたい場合がある。そういうときに比較としてその月の初日を持ち出す訳だけど、なかなかいい方法がない。そこでこんな方法を考えてみた。 to_date(some_…
詳しくは書けないが、たとえば以下のようなテーブルがあったとする。 term_start date term_end date number intこのterm_startとterm_endをみて、case文をクエリに書こうとするときにdate型とinterval型を混ぜて演算させると、戻り値がinterval型になってし…
FOR IN SELECT文やFOR IN EXECUTE文などでループを回しているその中でさらにループを回したいときがある。そういうときにFOR文でエラーが出ることがあるのでカーソルを利用してループを作成するといい。 OPEN cursor FOR SELECT ... or OPEN cursor FOR EXEC…
複数行の問い合わせ結果を扱いたい場合はFOR IN SELECT文やFOR IN EXECUTE文を用いればよい。 FOR record | row IN select_query LOOP statements END LOOP; FOR record | row IN EXECUTE sql LOOP statements END LOOP; statements内で結果を返したい場合は…
ストアドプロシージャの文法は結構簡単。 代入 var := value; 代入は:=で行う。イコールは比較演算子なので注意すること。 文字列 基本的には文字列はシングルクォーテーション2つでくくる。(全体をシングルクォーテーションでくくっているため)ただ、文…
まず通常のSQL文でも用いる型の場合は var_name [CONSTANT] type [NOT NULL] [:= expression]; 定数ならCONSTANTオプション、初期値を設定するなら最後の様にあらかじめ代入をする。次にPL/pgSQLでの型は var_name table.column%TYPE; var_name table%ROWTYP…
ストアドプロシージャ(ストアドファンクション)を作成するときはいったんファイルに作成して、コンソールで % \i 'FILE_PATH'とするのが吉。まず大枠として関数は以下のような形で作成する。OR REPLACEをつけているのは、関数を変更したときにいちいちDROP…
ネットにつないでいないと開発できないってのは結構きつい。結構ネット環境がないところに遊びにいったりしてるしね。というわけで、自分のマシンにも入れてみました。PHPやApacheのバージョンい関してはちょっとわけあり。■環境 OS : WindowsXP Pro SP2 Apa…
いよいよこいつを使わないといけない状況になってしまった。というわけで早速PL/pgSQL言語で関数を作成することに。と思ったらなんか ERROR: language "plpgsql" does not exist とか言って怒られた。どうやら調べてみるとコンソールからcreatelangというコ…
たとえばなんかのマスターテーブルを作成したいときにCSVファイルからCOPYコマンドを使って登録したいときがあるとする。そのときに注意しなきゃいけないのが文字コードと改行コードで、ExcelでCSVファイルを作成する場合、Macはどうか知らないけど、Windows…
便利な演算があるらしい。 文字列連結 SELECT key, str1 || ',' || str2 as str_all FROM table 計算 SELECT key, value1 + value2 as total FROM table
テーブルで並び替えを多重に行いたいときはORDER BYを多重にかけてやればいい。 SELECT * FROM table ORDER BY column1,column2左から順に評価されていく。
ダンプ pg_dump -c DB_NAME -h HOST_NAME -U USER_NAME > FILENAME「DBに変更を加えたら必ずダンプしておけ!」 リストア psql DB_NAME -h HOST_NAME -U USERNAME < FILENAME「困ったらリストアしとけばいいんだ!」
テーブルの作成にはcreate tableを使う。 CREATE TABLE [table_name] ( [column1 type condition],[column2 type condition],...,CONSTRAINT [tag] [constraint]([column],[column],...)) 普通に作成するときはCONSTRAINT以下はあまり意識しないけど、複合主…
PostgreSQLでmin,max,sumを複数のカラムで使うときは min | min ----------- 1| 1 みたいにカラムの名前がかぶってしまう。そういうときは SELECT min(data1) as min_data1, min(data2) as min_data2 FROM table; とすれば min_data1 | min_data2 ----------…
なんかちょこっと調べたらすぐに出てきたのでメモ。COPYコマンドを使うとCSVの読み書きが簡単にできるっぽいよ。 CSVをテーブルに取り込む COPY [table_name] FROM '[filename]' DELIMITER ',' テーブルをCSVに書き込む COPY [table_name] TO '[filename]' D…
カラムの名前を変更したり、カラムの属性を変更したりするのはよくあることです。ということを今日知った。本当はDB設計は一番肝心なはずだからほいほい変えちゃいけないんだけど、実際にやってみないとわからないこともあるから仕方ないよね。 というわけで…