1

UNIXでキャッシュデータベースにクエリを実行するスクリプトを作成しようとしています。出力を取得できましたが、出力をファイルに書き込むにはどうすればよいですか>次の手順を使用しました:

cache << EOF
DO \$SYSTEM.SQL.Shell()
SELECTMODE DISPLAY
SELECT * from .....
GO
EXIT
EOF
4

2 に答える 2

0

これをレポート/Web ページなどに使用している場合は、Intersystems が Perl、Python、Ruby などに提供する組み込みモジュールを調べます。これらは、データベースへのよりクリーンなインターフェイスを提供するはずです。

そうは言っても、データベースから取得しようとしているもの (通常は内部) のため、言語 API を使用しない監視目的で外部呼び出しをいくつか行います。その場合、Perl を使用します。私が Perl を使用するのは、この方法でメニューやその他の不要なもの (API では取得できないもの) を解析する必要があるためです。以下は、キャッシュに存在するすべてのユーザーを調べる簡単な例です。

#!/usr/bin/perl

use strict;

my $username = 'user';
my $password = 'password'; 

my $val = `csession $instance -U %SYS << done
$username
$password

d ^SECURITY
1
3
*
*



h
done`;

my @users = split(/\n/, $val);
my $in_users = 0;
my $output = '';
foreach (@users){
     if($in_users){
    chomp($_);
    if($_ eq ''){
        #no longer listing users
        $in_users = 0;
    } else {
            $output .= "$_\n";
        } 
  }
  $in_users = 1 if($_ =~ m/^\-\-\-\-/);  # I started a the user list 
}

print $output; # this prints out to the console

#This prints to a file.
open(OUTFILE, ">outfile.txt");
print OUTFILE $output;

Perl および Python API に関する次のリンクを確認してください http://docs.intersystems.com/cache20102/csp/docbook/DocBook.UI.Page.cls?KEY=GBPL および http://docs.intersystems.com/cache20102 /csp/docbook/DocBook.UI.Page.cls?KEY=GBPY

于 2011-03-27T19:20:58.703 に答える