テーブルと列名を含むファイル。今、これら2つの値を両方の変数に入れてループを回したいと思います。

テーブルと列名を含むファイル。今、これら2つの値を両方の変数に入れてループを回したいと思います。

objects.txt以下のように、テーブルと列を含むファイルがあります。

Part:1
Table_name: customer1
Column_name: account_no

Part:2
Table_name: customer2
Column_name: purchase_id
.
.
Part:n

ループ内の2つの変数でファイルからtable_nameとcolumn_nameを選択し、それを送信して次のsqlplusクエリを実行しようとしています。

For tab in grep of table_name
For col in grep of column_name

Set table=$tab
Set column=$col
Set Null_check='sqlplus -s/@$oracle' ‹‹ENDOFSQL
set serveroutput on;
Select count(*) from (select $column from $table where $column is null);
Exit
ENDOFSQL

単一の for ループ反復でこれらの 2 つの変数を繰り返し、この SQL クエリに送信する方法を教えてください。

ベストアンサー1

このような:

function insert {
    printf "Table: %s Column: %s\n" $1 $2
}

while read prefix rest
do
    case $prefix in
        'Table_name:') 
            table=$rest
            ;;
        'Column_name:') 
            column=$rest
            insert $table $column
            ;;
        *)
            ;;
    esac
done < datafile

insertこれをSQL要求を実行するために2つのパラメータを使用する関数に置き換えます。

おすすめ記事