現在、Postgresqlのcopyコマンドを使用して、SQLクエリの結果をヘッダー付きのCSVファイルに出力しています。私がやりたいのは、ヘッダーとCSVデータの先頭の間に改行を追加して、読みやすくすることです。
クエリを変更するだけでこれを行う簡単な方法はありますか?ご協力いただきありがとうございます!
現在、Postgresqlのcopyコマンドを使用して、SQLクエリの結果をヘッダー付きのCSVファイルに出力しています。私がやりたいのは、ヘッダーとCSVデータの先頭の間に改行を追加して、読みやすくすることです。
クエリを変更するだけでこれを行う簡単な方法はありますか?ご協力いただきありがとうございます!
いいえ、ありません。出力を後処理するスクリプトで実行します。PostgreSQLCOPY
は、きれいに印刷された読み取り可能な出力を生成することは想定されていません。信頼性が高く、一貫性のある出力を生成するためにあります。
実際には、それは少しハックですが、可能です:
クエリでAS句を使用して出力の最後の列の名前を変更し、列の最後に改行文字を追加します。非標準文字を保持するには、列名を必ず二重引用符で囲む必要があります。また、COPYのFORCEQUOTE句でその列を使用することはできません。
私はあなたがこのクエリで要求したようにそれを動作させることができました:
copy (select typname, typlen, typinput, typoutput as "typoutput^L" from pg_type limit 10) to stdout with csv header;
私のシステムの出力の最初の3行は次のようになります。
typname,typlen,typinput,typoutput
bool,1,boolin,boolout
この出力の「^L」は、PostgreSQL9.2psqlクライアントのLinuxコンソールで実際にキーの組み合わせを使用していることに注意してください。文字列「^L」を使用しようとしても機能しません。また、これも機能しませんが、近づきます(改行に注意してください)。
copy (select typname, typlen, typinput, typoutput as "typoutput
" from pg_type limit 10) to stdout with csv header;
これにより、最初の2行は次のようになります。
typname,typlen,typinput,"typoutput
"
これは完全には正しくありません。
特定の環境で改行文字を追加する方法をいじくり回す必要がありますが、ここで開始するには十分な情報であるといいのですが。