UNIX에서 여러 줄의 SQL 읽기

UNIX에서 여러 줄의 SQL 읽기

현재 아래 .sql 파일에서 일부 쿼리를 읽고 있습니다.

--SOURCE TABLE NAME  
--SOURCE QUERY  
SEL COL1, COL2, COL3, COL4,   
COL5, COL6, COL7 WHERE COL5 = '2015-11-04 16:24:00.000000' FROM SOURCE TABLE;

--TARGET TABLE NAME  
--TARGET QUERY  
SEL COLUMN1, COLUMN2, COLUMN3, COLUMN4,   
COLUMN5, COLUMN6, COLUMN7 FROM TARGET TABLE;  
0,1

.sql 파일의 내용을 읽는 코드는 다음과 같습니다.

validate() {  
queryNum=0  
while true  
do  
    ((queryNum++))  
    read tableName  
    read comment  
    read sourceQuery   
    read blankLine  
    read tableName  
    read comment  
    read targetQuery   
    read primaryKeyCols || break  
    read blankLine  
    exQuery "$sourceQuery" sourceResults.txt   
    exQuery "$targetQuery" targetResults.txt           
done < $1  
}  

이 접근 방식의 유일한 단점은 SQL 쿼리가 여러 줄에 걸쳐 작성되면 읽을 수 없다는 것입니다. 작동하려면 한 줄에 있어야 합니다.

쿼리를 읽을 때 좀 더 유연하게 대처하고 싶습니다. Unix에서 여러 줄의 SQL을 읽을 수 있는 방법이 있습니까? 도와주세요.

답변1

;줄의 마지막 문자라고 가정하는 간단한 방법은 다음과 같습니다.

sqlcommand=""
while read -r line; do
        sqlline=${line%%--*}
        sqlcommand+="${sqlline}"
        if [[ "${sqlline}" = *\;* ]]; then
                break
        fi
done < input

echo "${sqlcommand}"

관련 정보