<< 2007/11/ 1 1. L.ROOT-SERVERS.NET 変更
2. SQLite Manager 使ってみた
3. coreserver なんてものがあったのか
4. pseudo user css リポジトリはどうか?
2 1. SPF対策…
3 1. その名は Stylish
4 1. au のドメイン認証規制でちょっと悩む
5 1. pg_dump は custom format がよいのか?
2. PostgreSQL 8.1 以降、デフォルトDB は postgres
3. au SPF 続報
6 1. rake db:schema:dump してみた
2. PostgreSQL 8.1 以降は少なくとも psql での管理はやりやすくなってる
7 1. PostgreSQL 8.1 以降のメンテツールのもと
2. Web業界と Un*x と Cygwin
8 1. prototype.js 1.6.0 !
9 1. ftp.jp.debian.org の CDN 化
2. IBM developerWorks の URL がゴロンゴロン変わってる
10 1. あれこれ整理
11 12 1. Linux で sh スクリプトを書くときは Debian がいいのか?
13 14 1. 今さら Twitter で遊ぶ
15 16 1. その名は Sieve
17 18 1. nadoka をいじり始めてこれからの irc の活用を妄想
19 1. nadoka を使ってニュースの feed を irc に複数垂れ流す
20 1. nadoka の rss_check.rb で RSS 2.0 とか Atom とか
21 22 1. タイピング
23 1. 自分自身が起動されたかどうかを確認
24 1. Apple の Wireless ペチペチキーボード触った
25 1. MeCab とりあえずよく分からず
26 27 1. ネットワーク越しに nkf を使うときは rlwrap もあると便利
28 1. OSX の ブラウザの accesskey の動作にちょこちょこ困る
29 30 1. Y! Widgets を HTML で作れるようになった!
>>
トップ «前の日記(2007-11-06) 最新 次の日記(2007-11-08)» 編集

2007-11-07 [長年日記]

_ PostgreSQL 8.1 以降のメンテツールのもと

メンテツールそのものじゃないです。とりあえず上げてみるテスト。こんなのがあると sh スクリプトとかと組み合わせやすいかなーと思う。

DB一覧

最も単純にはこう。

psql -U postgres -t -A -F " " -l | awk '{print $1}'

ただしこれだと template0, template1, postgres が含まれてしまう。

psql -U postgres -t -A -F " " \
-c "select datname from pg_database where not datistemplate;"

にすれば postgres は入っちゃうけど「使える」データベースの一覧が採れる。

テーブル一覧

とりあえずテーブル名だけ

psql -U postgres -c "\d" $DBNAME
psql -U postgres -t -A -F " " -c "\d" $DBNAME | awk '{print $2}'

権限情報付きはこう。

psql -U postgres -c "\dp" $DBNAME
psql -U postgres -t -A -F " " -c "\dp" $DBNAME | awk '{print $2, $4}'

権限付きはいっぺんに取得できない。上と組み合わせてこんな感じ。勘違いして必死こいて awk で sql を組み立てたバージョンも晒しておきます。ほ、ほら、sql を書き換えればいろんな情報が採れるよ!とかほざいておく。

psql -U postgres -c "select relname,relacl from pg_class where relname \
in (`psql -U postgres -t -A -F ' ' -c '\d' $DBNAME | awk '{print $2}' |\
awk -F '\n' -v RS='' -v ORS='' 'BEGIN {print \"\047\"}\
{gsub(/\n/,\"\047,\047\"); print}\
END {print \"\047\"}'`)" $DBNAME

なんでこんなまどろっこしいことやってるかっていうと pg_class の結果からシステムが用意したテーブルかどうかを判断する基準が分からなかったから。

スクリプトの長さはともかく、SQL を生読みするよりは多少権限付与の状態が見やすい……んじゃないかなぁ。

{ }

の中を , で split するとかは好きずきってことで。

select relname,relacl from pg_class where relname in

の部分を

select relname,relfilenode,relpages,relacl from pg_class where relname in

ってやっとくとディスクスペースの確認もしやすくなる*1。インデックスとか入ってないけどそこら辺は適当で、ひとつ。

role一覧

※ たぶん 8.1 以降専用なのはここだけだと思う。

まずはまんま。

psql -U postgres -c "\du"

ユーザー名とグループのみに絞ってテキストデータだけにするとこんな感じ。

psql -U postgres -t -A -F '|' -c '\du' | awk -F \| '{print $1, $6}'
Tags: DBMS CLI

_ Web業界と Un*x と Cygwin

駄文 - プログラミングと Shell - IT戦記

モテたいやつは Un*x 使って shell 使って書けと。(嘘)

仰るように基本テキスト処理っつーのは大きいと思います。テキストが「インターフェイス」なのよね。ただ CLI は最初の心理障壁がべらぼうに高いので、GUI のツールにできっこねー技をいくつか披露しておくと(してもらうと)多少はマシかもしんない。別にオレたちゃマゾっ気があって Terminal 開いてるわけじゃない。ジョブズが好きだから Mac 使ってんじゃない。

話がそれた。

cygwin は wget とかでがっつりローカルにミラー作っておくとインストールも更新も早くて楽です。最近はそんなことしなくてもみんな十分回線が速いのかしら。

あとはいつも言ってることのくり返し。

cygwin のメリットは

  • ファイルシステムが Windows と分離しないのに完全な1システムとして動く
    • 同じコマンドを個別にインストールするのと違って楽だし統一感もある
    • cofs 使ったことないんでその辺は分かりまへん
  • shell から Windows のコマンドもそのまま呼べる

この2点だと思う。で、ターミナルは絶対変えた方がよい。これは

から。

/cygdrive/c/

になる問題は

cd /
ln -s /cygdrive/c
ln -s /cygdrive/d

しとくとよいよ。

最近の cygwin は screen もまともに使えるし、結構便利なんじゃないかな。

*1 この page の単位ってよく知らないけど、node が分かれば ls -lh? とかで容量の確認はできる。ま、フツーそんな細かいレベルの情報は必要にならないというか、そんなの気にしちゃダメっぽい。もっとざっくり効率がいいか悪いかとかディスクに収まるかどうかだけ見ろと言いたいらしいぞ。知らんけど。

本日のツッコミ(全4件) [ツッコミを入れる]
_ showhchan (2007-11-07 13:47)

/cygdrive/c は、
mount -c / ってやれば /c になりますよ。

_ wtnabe (2007-11-07 14:20)

-c, --change-cygdrive-prefix change the cygdrive path prefix to <posixpath> ですか。なるほどこれは便利。

_ 通りすがり (2007-11-08 06:05)

\dpまたは\zというのじゃダメですかね。viewとかsequenceも出ちゃいますが。

_ wtnabe (2007-11-08 09:28)

わー。
まんま出てますね…。アホすぎました。ごめんなさいごめんなさいごめんなさい。またするかもしれませんけどごめんなさい。