테이블 및 열 이름이 포함된 파일입니다. 이제 이 두 값을 두 변수에 넣고 루프를 돌고 싶습니다.

테이블 및 열 이름이 포함된 파일입니다. 이제 이 두 값을 두 변수에 넣고 루프를 돌고 싶습니다.

objects.txt아래와 같이 테이블과 열을 포함하는 파일이 있습니다 .

Part:1
Table_name: customer1
Column_name: account_no

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

이제 루프의 두 변수로 파일에서 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 루프 반복에서 이 두 변수를 반복하고 이 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 요청을 실행하기 위해 두 개의 매개변수를 사용하는 함수로 바꿉니다 .

관련 정보