0

データベースの外部でクエリを使用しようとしました。つまり、データベースにログインせずに結果を取得したいのです。オプション(-c)を見つけました。このオプションを使用すると、データベースの外部からクエリを実行できます。

test:~$ psql  -U sat -c "select * from test.details";

それは出力を与えます。そのクエリをcrontabエントリに使用したいと思います。だから私は出力をファイルに保存しようとしました:

 test:~$ psql  -U sat -c "select * from test.details \g sat";

エラーが発生しました:

ERROR:  syntax error at or near "\"
LINE 1: select * from test.details \g sat

どうやってするか?

4

2 に答える 2

3

これはスラッシュではなく、バックスラッシュです。 バックスラッシュはPostgreSQL文字列リテラルのエスケープ文字であるため、実際のデータに1つのバックスラッシュを含めるには、バックスラッシュを2倍にする必要があります。クエリの結果をコマンドラインからファイルに保存する場合は、-oコマンドラインオプションを使用する必要があるため、クエリは次のようになります。

psql  -o filename -U sathishkumar -c "select * from hospital_management.patient_details";
于 2012-02-08T08:07:41.010 に答える
3

「データベース外でのクエリ」や「データベースへのログインなし」などはありません。

psqlクライアントのメタコマンドとSQLコマンドを混在させようとしていますが、これは厳密には不可能です。バックスラッシュメタコマンドはpsqlクライアントによって解釈され、SQLクエリはデータベースサーバーによって解釈されます。

psqlのほとんどのメタコマンドは、実際にはデータベースサーバーへの(一連の)SQLクエリに変換されます。-Eインタラクティブモードでコマンドオプションを使用して起動すると、データベースエンジンに送信するコマンドをpsqlに出力させることができます。試す:

psql -E mydb

次に、バックスラッシュコマンドを実行して、出力を確認します。残りの質問については、@alerootはすでに良いアドバイスをしています。

于 2012-02-08T11:05:21.977 に答える