2015/03/24

pgAdmin 改行・タブを含む文字列をファイル出力

[pgAdmin][PostgreSQL]
前のブログで(2013/07/14)クエリ実行だけで何とかする方法を書きましたが、昨日書いた pgAdmin クエリツールの execute to file メニューを使えばもっと簡単で、出力先も自由に設定できて便利でした。今頃すみません m(_)m 以下に Windows 7 32bit + PostgreSQL Portable 9.4 + pgAdmin 1.20 での様子を紹介します。

↓ 例として、短い XML 型の文字列をテーブルに入れて試します。文字列の中に改行やタブがあり、そのままファイル出力して別のアプリケーション等で使う想定。

CREATE TABLE "201503"."24_sample" AS
SELECT 1 id, '<root>
<item>りんご</item>
<item>みかん</item>
<item>ぶどう</item>
</root>' :: text xmltxt ;

-- 確認
SELECT * FROM "201503"."24_sample" ;


↑ クエリツールの出力ビュー(グリッドの中)ではタブが省略されますが、列 xmltxt の文字列自体はタブ入り。これをそのままファイルに出力できれば、整形済み XML 文書として使えます。

↓ まず xmltxt 列だけを出力するクエリを書き、次にメニューから Execute to file を呼び出し、出力先などを設定します。一行一列だけの出力なので「行区切り文字」「列区切り文字」は関係しません。実行後、問題なければ正常終了のダイアログが出ます。




↓ 出力結果。確かに改行・タブがそのまま出力されました。改行は LF で、冒頭のテーブル作成のように改行を含む文字列を直接入力するとこうなるみたいです。


↓ 改行が LF だと Windows 7 付属のメモ帳では改行されないので、一応 CRLF で出力する方法もメモ。出力時の「行区切り文字」を CRLF にしても、今回のように一行(一レコード)を出力する場合は影響せず使えません。


↓ そこでクエリ自体に replace(列名, E'\n', E'\r\r') を入れ、Execute to file メニューを先ほどと同様に実行。念のため「行区切り文字」を LF にして、これが影響しないことを確認します。



↓ 出力結果。確かに改行が CRLF になり、タブはそのままで出力できました。
×

この広告は1年以上新しい記事の投稿がないブログに表示されております。