バックグラウンド
やあ、
Intersystems Caché データベースを使用する Unix ベースのアプリケーションを使用しています。私は Caché にあまり詳しくないので、入力できることを最近まで知りませんでした...
$ cache
...データベースに入ります。ここから、%FREECNT
レポート、^DATABASE
ルーチン (データベースのサイズやその他のプロパティを表示/変更するため) $SYSTEM.SQL.Shell()
、.
. _ $SYSTEM.SQL.Shell()
_%SYS.ProcessQuery
クエリを正常に実行できます-例:
USER>ZN "%SYS"
%SYS>D $SYSTEM.SQL.Shell()
SQL Command Line Shell #Comment - Sql Shell Intro text
--------------------------------
Enter q to quit, ? for help.
%SYS>Select PID As Process_ID, State As Process_Status From %SYS.ProcessQuery
上記のクエリは、次の形式で結果を返します。
Process_ID Process_State
--------------------------------
528352 READ
2943582 HANG
707023 RUN
3 Rows(s) Affected
--------------------------------
質問
上記の背景を考慮して、「SQL コマンド ライン シェル」のイントロ テキスト、列名、または行数フッターを使用せずに結果のみを返す方法を探しています。上記のように、Unix で .ksh スクリプトを記述して Caché に接続し、クエリを実行すると、含めたくない次のテキストと共に結果が返されます。
SQL Command Line Shell
--------------------------------
Enter q to quit, ? for help.
Process_ID Process_State
--------------------------------
3 Rows(s) Affected
--------------------------------
追加情報
awk
Unix コマンドを使用して、 andを使用してテキストの一部を除外できることはsed
わかっていますが、組み込みのもう少し簡単でクリーンな方法を探しています。このLINKsilent
の例のように、またはno_column_names
フラグを持つものかもしれません。
私の最終的なゲームは、クエリから情報を取得するスクリプトを実行し、その情報を使用して、特定のしきい値が満たされたときにデータベースに変更を加えることです。最終的には、定期的にスクリプトを実行するようにスケジュールを設定したいので、データベースにバインドする別のクライアント アプリを作成するのではなく、すべての処理をサーバー上で実行する必要があります。