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 行)



以上 
inserted by FC2 system