ラベル PostgreSQL の投稿を表示しています。 すべての投稿を表示
ラベル PostgreSQL の投稿を表示しています。 すべての投稿を表示

2008年12月11日木曜日

PostgreSQL -- 新しいテーブルスペースを作る

PostgreSQL

新しいテーブルスペースを作ろうと思いました。
テーブルスペースのファイルをDドライブに置きたかったからです。

ちょっとSQLを書く自信がなかった(単に調べるのが面倒だった)ので、
pgAdmin III を立ち上げて、「編集」メニューから「新規オブジェクト」で「新しいテーブル空間」を選ぶ。

「名前」をつける
「ロケーション」に D:/Robot/db と入力する
「オーナー」に postgres を選択する
--この作業を※1と呼びます

さて、出来るかな… …出来ない!

どうやら、postgres さんには、上記ロケーション(パス)に対する書き込み権限がないらしい。

使用しているOSは windows xp home edition なので、フォルダのプロパティで権限を設定できない。

でも、同じことを考えている人はいるもので…


結局のところ、コマンドプロンプトから
cacls D:\Robot /T /E /C /G postgres:F
と打つと、権限を与えることが出来ました。
--この作業を※2と呼びます

(正解を出す前に間違った設定をしてしまったらしく、
Dドライブにアクセスできなくなってあせりました。
そんなときも、落ち着いて、
cacls D: /T /E /C /G owner:F
で、権限を取り戻しましょう。)

さて、では、気を取り直して、
※1の作業をやると… …こんどは出来ました!


で、pgAdmin で「ファイル」メニューから「サーバーの追加」を選択。
「名前」に※1でつけた名前を入れ、
「ホスト」に localhost と入れて
「ユーザー名」に postgers を選択、
「パスワード」も入力して(これをしなかったので後でちょっと困りました)
OKボタンを押しましょう。

はい、つながりました。

気をよくしたので、ついでにデータベースも作っちゃいましょう。
同じく pgAdmin で、
「編集」メニューから「新規オブジェクト」で「新しいデータベース…」を選ぶ。

適当に入力すれば出来ますね。
ただ、「テーブル空間」に さっき作った新しいテーブルスペースの名前を選びましょう。
今回は robot という名前を付けました。

ここで気が付いたんだけど、元々あるデータスペースにも新しいデータベースを作るときに、さっき作った新しいテーブルスペースの名前が選択できるんですね。



ふむふむ。
では、新しいデータベース robot をいじり倒すために、どうすればいいのか調べましょう。


実験の結果、できました。

まず、スタートメニューのすべてのプログラムにある「postgreSQL 8.3」の実体のフォルダにアクセスします。
「'postgres'へのpsql」のショートカットをコピーします。
「リンク先」の内容を次のように修正します。
"C:\Program Files\PostgreSQL\8.3\bin\psql.bat" -h localhost -p 5432 robot "postgres" SJIS

ついでに、「コメント」の内容も次のように修正します。
PostgreSQLインタラクティブ・ターミナルで、「robot」データベースに接続します。


これで、巨大なDドライブにでっかいテーブルを作成できるようになりました。

めでたし めでたし!


2008年12月9日火曜日

PostgreSQL -- PL/pgSQL を使うために

PL/pgSQL を使うために必要なことがありました。

インストールしただけだと、PL/pgSQLが使えないのでした。

そこで、このページ<PostgreSQL 編19 - ストアドファンクション、function、PL/pgSQL、トリガー>を参考にして…



1 俺の場合は、Windows xpでPostgreSQLを使っているので
   スタートメニューのすべてのプログラムにあるPostgreSQL 8.3 の
   「コマンド・プロンプト」ショートカットを実行します。

2 createlang -h 127.0.0.1 -d postgres -U postgres plpgsql
   と、入力して、エンターキーを押します。

3 パスワードを聞いてくるので、入力して、エンターキーを押します。

「'postgres'へのpsql」の画面から
select * from pg_language
を実行すると、登録されているLANGUAGEを確認することができます。


これでようやく、↓みたいな文を書くことが出来ました。

PostgreSQL 8.3.1文書 38.6. 制御構造 例 38-1. UPDATE/INSERTの例外から抜粋
CREATE OR REPLACE FUNCTION getAllFoo() RETURNS SETOF foo AS
$BODY$
DECLARE
r foo%rowtype;
BEGIN
FOR r IN SELECT * FROM foo
WHERE fooid > 0
LOOP
-- can do some processing here
RETURN NEXT r; -- return current row of SELECT
END LOOP;
RETURN;
END
$BODY$
LANGUAGE 'plpgsql' ;

SELECT * FROM getallfoo();

2008年12月8日月曜日

PostgreSQL -- ファイルからpsqlを実行する方法

PostgreSQL 

Windows xpでPostgreSQLを使っています。

今日はちょっとしたメモを。


ファイルからpsqlを実行する方法:


1 スタートメニューのすべてのプログラムにあるPostgreSQL 8.3 の
        「'postgres'へのpsql」ショートカットを実行します。

2 パスワードを入力して開始します。

3 \cd 'D:\\ddddd\\ddddd'    --これにより実行したいファイルの入っているフォルダに移動します。
      バックスラッシュを2重にするのがポイントです。

4 \i fff.sql     --これにより指定したファイル(ここでは fff.sql )を実行します。