其中包含表名和列名的文件。现在我想将这两个值放入两个变量中并循环它们

其中包含表名和列名的文件。现在我想将这两个值放入两个变量中并循环它们

我有一个名为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 请求的函数。

相关内容