在 sql 脚本中读取配置文件
reading from config file in a sql script
我有一个 sql 脚本,我在其中创建应用程序中使用的所有序列,如下所示。这些值对于不同的服务器会有所不同。
我不想提供这些硬编码值,而是想在某些配置文件中指定这些值
有没有一种方法可以从我的 sql 脚本
中的配置文件中读取所有这些值
创建序列tbl1_tbl1id_seq AS INT START WITH 1 INCREMENT BY 2 MAXVALUE 50000;
创建序列tbl2_tb21id_seq AS INT START WITH 1 INCREMENT BY 2 MAXVALUE 50000;
CREATE SEQUENCE tbl3_tbl3id_seq AS INT START WITH 1 INCREMENT BY 2 MAXVALUE 50000;
我可以用下面的方式做到这一点。
我写了一个 shell 脚本,它会逐行读取配置文件,并生成 sql 写入新文件的语句。最后,我从脚本本身
执行新的 sql 脚本
INPUT=config.txt
OLDIFS=$IFS
IFS=','
[ ! -f $INPUT ] && { echo "$INPUT file not found"; exit 99; }
while read sequencename start_value increment_by maxvalue
do
echo "SequenceName : $sequencename"
echo "start value: $start_value"
echo "increment by : $increment_by"
echo "max_value : $maxvalue"
echo "CREATE SEQUENCE $sequencename AS INT START WITH $start_value INCREMENT BY $increment_by MAXVALUE $maxvalue;" >> createsequence.sql
#done < $INPUT
done < <(tail -n +2 $INPUT) #This skips reading the header
IFS=$OLDIFS
config.txt 包含以下行,
sequencename,start_value,increment_by,maxvalue
tbl1_tbl1id_seq , 1,2 ,50000;
tbl2_tbl2id_seq , 1,2, 50000;
tbl3_tbl3id_seq , 1, 2,50000;
我有一个 sql 脚本,我在其中创建应用程序中使用的所有序列,如下所示。这些值对于不同的服务器会有所不同。 我不想提供这些硬编码值,而是想在某些配置文件中指定这些值 有没有一种方法可以从我的 sql 脚本
中的配置文件中读取所有这些值创建序列tbl1_tbl1id_seq AS INT START WITH 1 INCREMENT BY 2 MAXVALUE 50000;
创建序列tbl2_tb21id_seq AS INT START WITH 1 INCREMENT BY 2 MAXVALUE 50000;
CREATE SEQUENCE tbl3_tbl3id_seq AS INT START WITH 1 INCREMENT BY 2 MAXVALUE 50000;
我可以用下面的方式做到这一点。 我写了一个 shell 脚本,它会逐行读取配置文件,并生成 sql 写入新文件的语句。最后,我从脚本本身
执行新的 sql 脚本INPUT=config.txt
OLDIFS=$IFS
IFS=','
[ ! -f $INPUT ] && { echo "$INPUT file not found"; exit 99; }
while read sequencename start_value increment_by maxvalue
do
echo "SequenceName : $sequencename"
echo "start value: $start_value"
echo "increment by : $increment_by"
echo "max_value : $maxvalue"
echo "CREATE SEQUENCE $sequencename AS INT START WITH $start_value INCREMENT BY $increment_by MAXVALUE $maxvalue;" >> createsequence.sql
#done < $INPUT
done < <(tail -n +2 $INPUT) #This skips reading the header
IFS=$OLDIFS
config.txt 包含以下行,
sequencename,start_value,increment_by,maxvalue
tbl1_tbl1id_seq , 1,2 ,50000;
tbl2_tbl2id_seq , 1,2, 50000;
tbl3_tbl3id_seq , 1, 2,50000;