현재 아래 .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}"