Как извлечь по одному запросу из файла 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 файл выглядит так:

sqlFile.sql

select * from test1;

select * from test2;

select * from test3;

В результате я получаю следующее:

wedtorque@wedtorque-VirtualBox:~/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;
wedtorque@wedtorque-VirtualBox:~/Desktop$

Принимая во внимание Я ожидал чего-то вроде этого:

wedtorque@wedtorque-VirtualBox:~/Desktop$ ./masterFile.sh
select *from test1;
select *from test1;
select *from test1;
wedtorque@wedtorque-VirtualBox:~/Desktop$

Также, когда я повторяю $ char внутри цикла while, он печатает имена файлов каждый раз, когда $ char получает * ] из запросов, выберите * из test1 ; и т. д.

Примерно так

wedtorque@wedtorque-VirtualBox:~/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;
;
0
21.04.2017, 00:55
1 ответ

Не уверен на 100%, что вы делаете, но предположу.

Файл.sql, в моем тестовом примере я назову егоtest.sql:

select * from test1;
select * from test2;
select * from test3;

И скрипт для чтения и отображения этих данных sql:

#!/bin/sh

# Get the raw sql data
RAW=`cat test.sql`

# We want to split the raw sql on a line return.
IFS="
"

# Echo out each line? Not sure if this is what you want.
for sql in $RAW
do
    echo "SQL line: [${sql}]"
done

exit

Это даст вам следующий результат:

SQL line: [select * from test1;]
SQL line: [select * from test2;]
SQL line: [select * from test3;]

Я думаю, что вам не хватает части IFS. Изman sh:

IFS  Input Field Separators. This is normally set to ⟨space⟩, 
     ⟨tab⟩, and ⟨newline⟩.
0
28.01.2020, 04:47

Теги

Похожие вопросы