[前の記事]« フォルダ名の変更コマンド
[次の記事][NT系]IF文の内と外では環境変数の扱いが違うのでしょうか? »

関連オンラインソフト配布サイト:
Vector>ダウンロード(top) |>MS-DOSまたは汎用 | >WindowsVista/XP/2000/NT

▲カテゴリー「SQLとコマンド・プロンプト」索引へ

テキスト出力項目をSQLPLUSに渡すには?

93.
テキスト出力項目をSQLPLUSに渡すには?
2004年01月15日(木) 18時01分
初心者シェル娘
シェルの中で情報抽出のSQLを実施し、テキストファイルに出力しました。
それをテーブル更新を行うSQLに引数として渡す為
awkで1レコート゛ずつSQLを実行しようとしたのですが
awkの中でsqlpulsを用いてSQLを実行できません。
awkでテキストを読み、それをもってSQLを実行する方法はないでしょうか。
もしないのであれば、何か別によい方法があれば教えてください。
110.
Re:テキスト出力項目をSQLPLUSに渡すには?
2004年01月16日(金) 22時30分
ふぇむ
>awkで1レコート゛ずつSQLを実行しようとしたのですが
>awkの中でsqlpulsを用いてSQLを実行できません。
>awkでテキストを読み、それをもってSQLを実行する方法はないでしょうか。

awk のリファレンス等を見るとわかると思いますが、awk スクリプト内でいきなり "dir" みたいに外部コマンドを実行できます。ただ、そのままではコマンドの出力を処理できないので、getline 等で受けとります。以下のようなイメージ。

BEGIN {
 dir_arg = "*.cmd";
 command = "dir " dir_arg;
 while ( command | getline > 0) {
  printf("%s\n",$0);
 }
}

本来の awk の実装としては同時オープン可能なパイプ数が制限されている(gawkはかなり拡張されているのであまりその心配はないのですが)ので、基本的には EOFになったらパイプクローズのための close関数で close(command) で閉じるのが定石です。しかし、なぜか私の持っている gawk.exe ではうまく閉じないようです。まあ、単にワーニングエラーメッセージが出るだけなので実害はないのですが....

とまあこんな感じで、awk 内部から外部コマンドを実行し、その出力を awk 内部で利用可能です。

しかし、無理に awk スクリプト内でやるよりは、おそらくジョブを分割して、awk で *.sql ファイルを生成するようなジョブと、その *.sql ファイルを実行しテキストファイル出力するジョブと、その出力テキストファイルを処理する awk を持つジョブと、みたいにしたほうが全体の見通しはよくなると思います。
 
 


カテゴリー「SQLとコマンド・プロンプト」索引へ

 

カテゴリー一覧

FPCU/FPCDIY QUICK LINK online
この上の各ジャンル名をクリックすると、下のウィンドウが切り替わります▼


=リンク集のインデックスはこちら=

資料書籍

About

2004年01月15日 11:12に投稿されたエントリーのページです。

ひとつ前の投稿は「フォルダ名の変更コマンド」です。

次の投稿は「[NT系]IF文の内と外では環境変数の扱いが違うのでしょうか?」です。

他にも多くのエントリーがあります。メインページアーカイブページも見てください。

This site is powered by Six Apart
Movable Type 3.33-ja
このブログについて | 運営:有限会社メディアポート