ここに問題があります。実行された .sql スクリプトからすべての PostgreSQL 出力を取得して、エラーやクエリ結果を含めてファイルに記録する方法を知る必要があります。
既にスクリプトを \o と \o の開始タグと終了タグで囲んでいますが、これはクエリの結果をログに記録するだけで、成功したことと失敗したことについては何もわかりません。次のような Unix ツールを使用して、PostgreSQL への呼び出しの結果をパイプしようとしました。
$~: psql < filename.sql | tee &> filename.log
...成功しませんでした。この場合の Filename.log は完全に空になります。
ユニバーサル ロギングを有効にしたくありません。自分が作成したスクリプトの成功/失敗だけに関心があり、今後の参考のために記録を残しておくためです。
Oracle では SPOOL を使用し、MySQL では TEE を使用しました。これらは両方とも私のニーズには十分に機能しましたが、 \o にはこの機能がなく、ログを有効にすることもありません。
どんな助けでも大歓迎です。
編集:私が使用しているバージョンは9.1です
編集: 私が抱えている問題は、 -f を使用して < を使用して .sql ファイルを実行すると、本質的に同じ結果が得られることです。エラーはログに記録されず、クエリ結果のみがログに記録されます。何らかの方法で stderr を取得して (それが使用されている場合)、コマンド ラインだけでなく、メッセージをファイルに出力する必要があります。これにより、ファイルは、クエリの結果とエラーが混在した状態で、ファイルを実行したコマンド ラインの結果と本質的に同じように見えます。これを行う必要がある理由は、.sql ファイルのデバッグがはるかに簡単になり、ユニバーサル エラー ログを回避しながら対象のレコードを保持できるようになるためです。