2

Informix 11.5 には、SQL Server の SQLCMD と同様のコマンド ライン ツールが付属していますか?

はいの場合、リモート サーバーに接続し、それを使用して通常の SELECT/INSERT/UPDATE クエリを実行するにはどうすればよいですか?

4

2 に答える 2

3

Michal Niklas が言うように、IBM Informix Dynamic Server (口語では IDS または単に Informix) で提供される標準ツールは DB-Access です。ただし、これは IDS 自体でのみ配布され、Informix Client SDK (CSDK) または Informix Connect (I-Connect) 製品では配布されません。

IDS がインストールされていないマシンから IDS にアクセスする場合は、マシンに CSDK または I-Connect のいずれかが必要です。また、その他のソフトウェア (おそらく、Microsoft よりも 10 年以上前のオリジナル バージョン) のSQLCMDが必要です。これは私が使っているもので、過去 22 年ほどの間 (咳、飛び散り、痛い) さまざまなバージョンで使用してきました。isqlDB-Access のプリカーソルである (製品 Informix SQL の一部)と呼ばれるプログラムのコマンド ライン動作が気に入らなかったので、私はこれを書きました。(多くの歴史 - あなたにとってあまり重要ではありません。)

使用法 - SQLCMD には、何をすべきかを知っているよりも多くのオプションがあります。ただし、基本は単純です。

 sqlcmd -d dbname@dbserver -e 'select * from table' -x -f file.sql

これは、sqlhosts ファイル (通常は $INFORMIXDIR/etc/sqlhosts) で指定されているように、'dbserver' と呼ばれるデータベース サーバーの 'dbname' と呼ばれるデータベースに接続します。「-e」は SQL 式 (選択ステートメント) を示します。結果は、厳密な形式 (Informix UNLOAD 形式) で、レコードごとに 1 つの論理行で標準出力に出力されます。「-x」はトレース モードをオンにします。「-f」オプションは、さらにコマンドを実行するために指定されたファイルを読み取ることを意味します。「.sql」拡張子は必須ではありません (注意: DB-Access には「.sql」拡張子が必要であり、自動的に追加されます)。('-e' または '-f' の前に付いていない引数はヒューリスティックに解釈されます。スペースが含まれている場合は SQL であり、含まれていない場合はファイル名です。) '-H' オプションは列見出し (ラベル) 結果セットの前。' -T' オプションは、列タイプを出力します (見出しの後、結果の前)。「-B」オプションはベンチマーク モードで実行されます。トレースをオンにし、ステートメント、ステートメントの開始時刻、および所要時間を出力します。(ベンチマーク シナリオのように、SQL の実行に何分もかかる場合は、ステートメントがいつ開始されたかを知ることが役立ちます)。出力形式 (CSV や XML のバリアントを含むが、名前空間を使用する XML は含まない) や日付形式などを制御できます。入力と出力、およびエラーをリダイレクトする「組み込み」コマンドがあります。ほとんどのコマンド ライン オプションは、interpeter などでも使用できます。SQLCMD は履歴メカニズムも提供します。SQL ステートメントを保存し、それらを表示、編集、または再実行できます。出力リダイレクトと組み合わせて、実行されたステートメントのリストなどを保存できます。オプションは、列の種類を出力します (見出しの後、結果の前)。「-B」オプションはベンチマーク モードで実行されます。トレースをオンにし、ステートメント、ステートメントの開始時刻、および所要時間を出力します。(ベンチマーク シナリオのように、SQL の実行に何分もかかる場合は、ステートメントがいつ開始されたかを知ることが役立ちます)。出力形式 (CSV や XML のバリアントを含むが、名前空間を使用する XML は含まない) や日付形式などを制御できます。入力と出力、およびエラーをリダイレクトする「組み込み」コマンドがあります。ほとんどのコマンド ライン オプションは、interpeter などでも使用できます。SQLCMD は履歴メカニズムも提供します。SQL ステートメントを保存し、それらを表示、編集、または再実行できます。出力リダイレクトと組み合わせて、実行されたステートメントのリストなどを保存できます。オプションは、列の種類を出力します (見出しの後、結果の前)。「-B」オプションはベンチマーク モードで実行されます。トレースをオンにし、ステートメント、ステートメントの開始時刻、および所要時間を出力します。(ベンチマーク シナリオのように、SQL の実行に何分もかかる場合は、ステートメントがいつ開始されたかを知ることが役立ちます)。出力形式 (CSV や XML のバリアントを含むが、名前空間を使用する XML は含まない) や日付形式などを制御できます。入力と出力、およびエラーをリダイレクトする「組み込み」コマンドがあります。ほとんどのコマンド ライン オプションは、interpeter などでも使用できます。SQLCMD は履歴メカニズムも提供します。SQL ステートメントを保存し、それらを表示、編集、または再実行できます。出力リダイレクトと組み合わせて、実行されたステートメントのリストなどを保存できます。

SQLCMD に関する唯一の問題は、現在 Windows に移植されていないことです。約6〜7年前にWindowsで動作しました。それ以来、Microsoft のコンパイラは非 MS API 関数に腹を立てており、(POSIX 機能を要求することによって) 名前でそれらを要求したとしても、関数の前にアンダースコアを付ける必要があると主張し、次のことができる関数の束を非推奨にすることによって自分がしていることに注意を払っていれば安全に使用できます (しかし、残念ながら、注意を払っていない人によって悪用される可能性があり、注意深いコーダーよりも不注意なプログラマーが周りにいるようです) - 「strcpy()」のような関数を意味します' 呼び出す前にソース文字列と宛先文字列のサイズを知っていれば、完全に安全に使用できます。それは私のやるべきことのリストに載っています - それは私のかゆみではないので、まだ行われていません.

検討できるSQSLという別のオープン ソース ツールもあります。SQLCMD (条件付きロジックなど) よりもいくつかの利点がありますが、SQLCMD には SQSL よりもいくつかの利点があると思います。

Perl + DBI + DBD::Informix + dbish が機能するかどうかを検討することもできます。

于 2009-11-26T17:04:45.157 に答える
2

DB-Access を試す

... DB–Access は、構造化照会言語 (SQL) ステートメントおよびストアド プロシージャ言語 (SPL) ルーチンを入力、実行、およびデバッグするためのユーザー インターフェイスを提供します...

于 2009-11-26T13:06:08.740 に答える