나는 다음과 같은 doc.lst를 가지고 있습니다.
23/02/2015 0 AAA
23/02/2015 0 AB1
23/02/2015 0 AC2
23/02/2015 0 FRR
23/02/2015 0 FPT
23/02/2015 0 PEI
23/02/2015 0 PEA
sqlplus 요청에서 각 부분을 매개변수로 선택하는 방법을 알고 싶습니다.
이것은 내 SQL 요청입니다.
UPDATE P
SET P.DATED='&1', P.DATEF='&1', P.COD='&2', P.CODB='&3'
WHERE P.G_BAT=1;
COMMIT;
내 SQL 쿼리는 다음과 유사합니다
sqlplus user/pass@ORACLE_SID update_p.sql 23/02/2015 0 AAA
하지만 난 사용하고 싶어
while read line
do
sqlplus user/pass@ORACLE_SID update_p.sql doc.lst
commit;
done;
내가 원하는 것은 내 doc.lst에 포함된 데이터로 내 테이블 P를 업데이트하는 것입니다. 1행, 2행, 3행의 첫 번째 요소를 사용하여 테이블 P를 업데이트하고 싶습니다. 이 셸 끝에는 스트림 xml을 생성하는 명령이 있습니다.
답변1
IFS=$'\n'
for i in $(cat doc.lst)
do
P1=$(echo $i|awk '{print $1}')
P2=$(echo $i|awk '{print $2}')
P3=$(echo $i|awk '{print $3}')
#now your SQL set would look like **SET P.DATED='$P1', P.DATEF='$P1', P.COD='$P2', P.CODB='$P3'** and you can launch your sql
done