SQL 파일에서 한 번에 하나의 쿼리를 추출하려고합니다. SQL 파일에서 한 번에 하나의 쿼리를 추출하는 방법은 무엇입니까?
이
내가 이런index1=1
index2=1
while read -n1 char; do
if [[ $char == ";" ]]
then
SUBSTRING=$(awk 'substr($index1,$index2)' sql1Temp.sql)
echo $SUBSTRING
index1=$index2
fi
((index2+=1))
done <sql1Temp.sql
내 SQL 파일보기를 시도 것입니다 :
sql1Temp.sql
선택 * TEST1에서;
select * from test2;
select * from test3;
나는 결과로이 무엇입니까 :
[email protected]:~/Desktop$ ./masterFile.sh
select *from test1; select *from test2; select *from test3;
select *from test1; select *from test2; select *from test3;
select *from test1; select *from test2; select *from test3;
[email protected]:~/Desktop$
내가 기대 한 반면이 같은 : 또한
[email protected]:~/Desktop$ ./masterFile.sh
select *from test1;
select *from test1;
select *from test1;
[email protected]:~/Desktop$
을 나는 동안 루프 내부의 $의 문자를 에코 때, 그것은 인쇄하고, $ char가 * from queries를 얻을 때마다 파일명을 선택하고, * test1을 선택한다; 내 의견으로는 뭔가에이
[email protected]:~/Desktop$ ./masterFile.sh
s
e
l
e
c
t
masterFile.sh sql1result.sql sql1.sql sql1Temp.sql sql2.sql Untitled Document
f
r
o
m
t
e
s
t
1
select *from test1; select *from test2; select *from test3;
;
same thing 3 times
같은 등
뭔가 AWK 잘못입니까?
while IFS= read -r line; do
echo "$line" # Or do what you need to do (e.g. execute SQL statement)
done <sql1Temp.sql
당신은 세미콜론에 대해 걱정할 필요가 없습니다 : 당신이해야 할 일은
내가 읽는 방식대로 스크립트가 의도 한 바를 설명해 주시겠습니까? 'cat sql1Temp.sql'과 동등한 회귀 및 느린 방식처럼 보입니다. 그리고 나는 뭔가 있어야한다고 생각합니다. 있어야 할 곳에 없는. – Fred
sql1Temp.sql 파일에서 하나의 sql querry를 가져 와서이 파일을 실행 한 다음이 파일을 새 파일에 복사하고 원본 파일에서 해당 querry를 제거해야합니다. –
항상 한 줄에 하나의 SQL 문이 있습니까? 아니면 둘 이상의 세미콜론으로 구분할 수있는 경우를 처리해야합니까? – Fred