PostgreSQLスキルアップノート(自己啓発のための個人サイト)
カラムで条件指定しないで簡易的に抽出
【一覧に戻る】
マニュアルへのリンクは/9.2/としています。
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
■■■■ PostgreSQL スキルアップノート
■■■■
■◆■■ カラムを指定しないで条件抽出
■■■■
■■■■
■■■■ 2013/01/02
■■■■ 使用環境:PostgreSQL9.1.7 (CentOS6.2)
(C) 2013 ohdb
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
検証データやシステムカタログなど、bashコマンドラインから1テーブル参照に限定
したスクリプト。テーブル全体を標準出力した上でgrepで抽出をかけられる。
DB側で絞り込まないため大きなテーブルでは負荷に注意のこと。
■1■ 準備(alias定義)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
あらかじめ.bash_profileに登録しておきエイリアスとして利用する。
【□】 vi ~/.bash_profile
psqltbl(){
if [ $# -eq 0 ]; then
echo 'Usage:psqltbl tablename connectionstring'
else
psql -P pager=off -c "TABLE $1" $2 $3 $4 $5 $6 $7 $8 $9
fi
}
■2■ 使用方法
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
bashコマンドラインより
【□】 psqltbl テーブル名 psql接続文字列※ | grep 文字列
※テーブル名の後は普段psql起動時に使用しているものと同じ引数を指定する
-d database -U userなど
■3■ 例
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
全部出力。grepなし。
【□】 psqltbl t1 database2 dba01
c1 | c2 | c3 | c4
----+------------+-----------+----
1 | 2013-01-01 | abc | 0
2 | 2013-01-31 | abc | 0
3 | 2013-06-01 | abc | 0
4 | 2013-06-30 | abc | 0
5 | 2013-12-01 | abc | 0
6 | 2013-12-31 | abc | 0
7 | 2014-01-01 | abc | 0
2013-01が含まれるものを抽出
【□】 psqltbl t1 database2 dba01 |grep 2013-01
3 | 2013-06-01 | abc | 0
4 | 2013-06-30 | abc | 0
pg_locksシステムカタログからAccessShareを除外
【□】 psqltbl pg_locks|grep -v 'AccessShare'
locktype | database | relation | tuple | virtualxid ・・ | mode | granted
---------------+----------+----------+--------+------------・・-+-----------------+---------
transactionid | | | | ・・ | ExclusiveLock | t
relation | 12780 | 19899 | | ・・ | RowShareLock | t
virtualxid | | | | 4/28446 ・・ | ExclusiveLock | t
virtualxid | | | | 3/115989 ・・ | ExclusiveLock | t
(5 行)
以上