Batch:通过shell读取DB生成json

弘烨烁
2023-12-01
function generatejson(){  (方法内的参数是不需要声明的,在main方法里面调用的时候声明即可)
FILTERS=`sqlplus -s inn/${TABLEA} <<EOF
    SET HEAD OFF
    SET FEEDBACK OFF
    SET PAGESIZE 0
    select ****(sql语句)
      from  ***
      where xxxx= '$1'  ($1表示,在main方法调用在这个这个方法的时候,会把参数1带到这里面来)
        AND ***
 /
 EXIT
EOF`
  if [ -n "${FILTERS}" ]; then
    echo "${FILTERS}" > $PARH    (把上面sqlhi行出来的结果传到这个路径的文件里面。PATH定义在config里面)
    while read line
        do
            if [ -n "$line" ]; then
                IFS',' read -a arr <<< "$line"  (每读一行line就把数据传到arr数组里)
            fi  (if-elif-fi是一套完整的if语句)
    done <<< $PATH  (把这个文件传岛循环里面,然后一行一行的读)
(while-do-done是一套完整的循环语句)
  fi  
}
function main(){
  jsonA=$(generatejson ${DATED} "") (表示调用上面的方法,参数1是${DATED},参数2是空的,如果有参数3就依次往下写即可。注意参数之间有空格)
  echo "[${jsonA}]" >> $PATHA
}
sql结果的样式FG,6,1,businessHotel,2,f_squeezes,business,2,1

上面是简单的一个shell,通过SQL读取DB,然后一条条的生成json,存放在指定的path里面。

因为没接触过shell,所以记录一下。 

生成的json样式

[
 {
    "FG": "FG",
    "no": "6",
    "ID": "1",
    "Feat": [
       {
        "nFeat": "hotel",
        "noLayer": "1",
        "key": "f_squeezes",
        "value": "hotel",
        "orderNo": "1",
        "secondFeat": [
           {
            "nFeat": "businessHotel",
            "noLayer": "1",
            "key": "f_squeezes",
            "value": "business",
            "orderNo": "1"
           }
         ]
       }  
    ]
 }
]

 类似资料: