1. ホーム
  2. sql

[解決済み] Psqlの出力で結果セットの装飾を隠す方法

2023-02-16 18:43:03

質問

psql からの出力で、カラム名と行数を隠すにはどうしたらよいですか?

でpsql経由でSQLクエリを実行しています。

psql --user=myuser -d mydb --output=result.txt -c "SELECT * FROM mytable;"

といった出力を期待している。

1,abc
2,def
3,xyz

が、代わりに出てくるのが

id,text
-------
1,abc
2,def
3,xyz
(3 rows)

もちろん、上の2行と下の行を後からフィルタリングすることも不可能ではありませんが、psqlだけでそれを行う方法はあるのでしょうか?マニュアルを読むと、フィールドの区切り文字を制御するオプションはありますが、余計な出力を隠すためのものはありません。

どのように解決するのですか?

を使用することができます。 -t または --tuples-only オプションで指定します。

psql --user=myuser -d mydb --output=result.txt -t -c "SELECT * FROM mytable;".SELECT * FROM mytable;"

編集 (1年以上後) を追加しました。

また、次のようなものもあります。 COPY コマンド . 私はもう手元にテスト用のPostgreSQLインスタンスを持っていませんが、この線で何か書くことができると思います。

psql --user=myuser -d mydb -c "COPY mytable TO 'result.txt' DELIMITER ','".COPY mytable TO 'result.txt' DELIMITER ','"

(ただし result.txt は絶対パスである必要があります)。そのため COPY コマンドはよりインテリジェントな CSV フォーマットもサポートします。 のドキュメントを参照してください。 .