はじめに
SELECTの実行結果からフッターのみを削除する方法(メモ)を記載しますが、
ついでに TableauなどのBIツールでデータを可視化する際に、
DBのカラム名をヘッダーとして使用し、出力したデータをそのまま利用できると便利なので、
併せて簡易なデータの整形方法を記載します。
使用したDB
- PostgreSQL、Redshift 9.2系
データ整形
何も指定せずにSELECTすると下記のようなデータが出力されます。
※『』で囲まれた数値は後述する識別番号です。
select * from book;
id | author | ←『3』 title
-------+------------+--------------------- ←『2』
1000 | 太宰治 | 人間失格
2000 | 太宰治 | 走れメロス
3000 | 太宰治 | 斜陽
4000 | 芥川龍之介 | 羅生門
5000 | 芥川龍之介 | 蜘蛛の糸
6000 | 芥川龍之介 | 河童
7000 | 夏目漱石 | 坊ちゃん
8000 | 宮沢賢治 | 銀河鉄道の夜
9000 | 宮沢賢治 | セロ弾きのコ"ーシュ
10000 | 宮沢賢治 | 注文の多い料理店
(10 行) ←『1』
データとして取り込むには不要な要素が多いのでコマンドを利用してデータを整形します。
『1』フッター表示をOFF
DB=>\pset footer
デフォルトのフッタは off です。
※ ヘッダーもフッター必要ないときは「\t」を指定すれば消せます。
select * from book;
id | author | title
-------+------------+---------------------
1000 | 太宰治 | 人間失格
2000 | 太宰治 | 走れメロス
3000 | 太宰治 | 斜陽
4000 | 芥川龍之介 | 羅生門
5000 | 芥川龍之介 | 蜘蛛の糸
6000 | 芥川龍之介 | 河童
7000 | 夏目漱石 | 坊ちゃん
8000 | 宮沢賢治 | 銀河鉄道の夜
9000 | 宮沢賢治 | セロ弾きのコ"ーシュ
10000 | 宮沢賢治 | 注文の多い料理店
『2』位置揃えをOFF
DB=>\a
出力フォーマットは unaligned です。
select * from book;
id|author|title
1000|太宰治|人間失格
2000|太宰治|走れメロス
3000|太宰治|斜陽
4000|芥川龍之介|羅生門
5000|芥川龍之介|蜘蛛の糸
6000|芥川龍之介|河童
7000|夏目漱石|坊ちゃん
8000|宮沢賢治|銀河鉄道の夜
9000|宮沢賢治|セロ弾きのコ"ーシュ
10000|宮沢賢治|注文の多い料理店
『3』(必要に応じて)区切り文字を変える(例:タブに変換)
-- ファイル出力に変更
DB=>\o /home/userA/test.txt
DB=>\pset fieldsep '\t'
フィールド区切り文字は " " です。
DB=>select * from book;
DB=>\o
※ 区切り文字はデータに含まれない文字を指定しましょう。
cat /home/userA/test.txt
id author title
1000 太宰治 人間失格
2000 太宰治 走れメロス
3000 太宰治 斜陽
4000 芥川龍之介 羅生門
5000 芥川龍之介 蜘蛛の糸
6000 芥川龍之介 河童
7000 夏目漱石 坊ちゃん
8000 宮沢賢治 銀河鉄道の夜
9000 宮沢賢治 セロ弾きのコ"ーシュ
10000 宮沢賢治 注文の多い料理店
コマンドラインで実行するなら
下記のようにすることで同様の結果が得られます。
psql -U xx -h xx -p xx -d xx -A -F ' ' --pset footer -c 'select * from book' > test.txt
※ ターミナルでタブを入力するには「Ctrl+V」を実行後、Tabキーを押すことで入力出来るかも。
おわりに
他にも便利なオプションが多く用意されていますので、
これらを知っていることで前処理にかける時間を減らすことが出来ますね。