SQLファイルから一度に1つのクエリを抽出しようとしています。SQLファイルから一度に1つのクエリを抽出する方法はありますか?
これは私が
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。
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クエリを取得するたびにファイル名、select * from 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ファイルから1つのsql querryをフェッチして実行する必要があります。次に、このファイルを新しいファイルにコピーし、そのファイルを元のファイルから削除します。 –
1行に1つのSQL文が常に存在するのですか、複数の(セミコロンで区切られた)複数のSQL文を扱う必要がありますか? – Fred