我想從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
SELECT * FROM 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$
還當我贊同while循環中的$字符,它打印文件名每次$ char從查詢中獲得*,從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?
請問你能解釋一下你的腳本是用來做什麼的,就像我閱讀它的方式一樣,它看起來像是一個相當於'cat sql1Temp.sql'的複雜和緩慢的方式,我想我必須有一些東西失蹤。 – Fred
我需要從sql1Temp.sql文件中獲取一個sql querry執行它然後將此querry複製到一個新文件並從原始文件中刪除該querry。 –
每行是否總是有單個SQL語句,或者您是否需要處理可以有多個(用分號隔開)的情況? – Fred