2015/03/23

pgAdmin クエリ結果のコピー・出力形式は自由に設定できた

[pgAdmin][PostgreSQL]
今ごろ気付くとは情けない… pgAdmin のクエリツールでクエリを実行し、その結果をクリップボードにコピー or ローカルファイルに出力する際、デリミタ(列間の区切り文字)と引用符はユーザが自由に設定できました。てっきり、プリセットされているものしか使えないと思い込んでいました。

前に書いた COPY コマンドの件と同様、できないと勘違いした状態での過去記事がいくつかありました。もし参考にされた方がいたら、すみません。m(_)m

この設定により、CSV や TSV はもとより任意の形式で柔軟にコピー or 出力でき、Excel など他のソフトウェアに簡単に持っていけます。以下 Windows 7 32bit + PostgreSQL 9.4 + pgAdmin 1.20 上の例ですが、pgAdmin 1.16 で少し試したら同様にできました。最初にクリップボードへのコビー、次にファイル出力の場合を書きます。

↓ のようにクエリツールで何か実行し出力ビューに表示させると、テーブル部分を自由に選択してコピー(編集メニュー or Ctrl-C)できます。この時のデリミタ、引用符の有無と種類、列名の有無を、pgAdmin のオプション設定から自由に変更できます。



↓ 設定場所はクエリーツール > Results grid で、上の三項目が、引用符を付ける対象、引用符、区切り文字。少し下 Copy column names をチェックすると先頭に列名が入ります。デフォルトの区切り文字がセミコロンなので、この設定を知らないと「何か変な形式でしかコピーできない…」と誤解するかも。


↓ 引用符とデリミタがセレクトボックスになっており、今日まで、セットされている文字しか使えないと思い込んでいました。実際タブ区切りにすれば Excel に直接コピペでき、他の形式は必要なかったので。でもセレクトボックスは単なる「入力補助」に過ぎず、任意の文字列を指定できることが分かりました。

↓ 例えばこんな設定に変えて、

↓ 出力ビューの一部を選択・コピーして SQL エディタ内にペーストすると、確かにデリミタ変更が反映されています。もちろん他のエディタへ貼り付けても同じ。


列名付き CSV 形式でコピーしたい場合は、先ほどのオプション設定画面の「フィールド・セパレータの結果コピー」にカンマを指定し、その下の Copy column names をチェック。引用符の種類・有無も適宜設定でき、後者は「無し、文字列のみ有り、全て有り」の三通り選べます。

次に、クエリ結果のファイル出力について。↓ クエリツールのメニュー Execute to file がその機能で、ツールバーは矢印+フロッビー?です。


↓ ダイアログに区切り文字と引用符の設定があり、ここでも今日まで、セレクトボックスにあるものしか使えないと勘違いしていました。実際は任意の文字列を指定できます。


↓ 例えばカンマ区切り、変な引用符、列名ありに変更し、適当なクエリを実行すると…


↓ クエリ実行とファイル出力が問題なくできればダイアログが出て、確かに指定どおり。



↓ 入力欄が小さいですが、二文字以上も指定できます。例えば「半角空白 & 半角空白」をデリミタに指定すると、その通り出力できました。



↓ タブ区切りの場合。セレクトボックスにタブがなく、直にも入力できませんが、エディタ欄などで一個タブを入力 & コピーして貼り付ければ可能で、下のように「列名付きタブ区切りファイル」に簡単に出力できます。実行した設定が次回まで記憶されのも便利。ただし列名は、常にチェックされた状態でダイアログが立ち上がるようです。

×

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