import os
import sys
import string
#以指定模式打开指定文件,获取文件句柄
def getFileIns(filePath,model):
print(\"打开文件\")
print(filePath)
print(model)
return open(filePath,model)
#获取需要处理的文件
def getProcFile(path):
return os.listdir(path)
#判断是否满足某个条件,如果满足则执行
def isTrue(outFileIns,s):
findStr1 = \"LINE_COUNT_UPDATE INTEGER := 0;\"
writeStr1 = \"LINE_COUNT_ERROR INTEGER := 0; --错误数据XX条\"
findStr2 = \"DBMS_OUTPUT.PUT_LINE(\'处理完毕\"
writeStr2 = \"DBMS_OUTPUT.PUT_LINE(\'错误数据[\'||LINE_COUNT_ERROR||\']条.\');\"
findStr3 = \"DBMS_OUTPUT.PUT_LINE(\'插入数据[\'||CUR_RESULT.INT_ID||\']时发生异常...\');\"
writeStr3 = \"LINE_COUNT_ERROR := LINE_COUNT_ERROR+1;\"
findStr4 = \"DBMS_OUTPUT.PUT_LINE(\'更新数据[\'||CUR_RESULT.INT_ID||\']时发生异常...\');\"
if s.find(findStr1) != -1:
outFileIns.write(s)
outFileIns.write(writeStr1+\"\\n\")
elif s.find(findStr2) != -1:
outFileIns.write(s)
outFileIns.write(writeStr2+\"\\n\")
elif s.find(findStr3) != -1:
outFileIns.write(s)
outFileIns.write(\"\\t\\t\\t\\t\"+writeStr3+\"\\n\")
elif s.find(findStr4) != -1:
outFileIns.write(s)
outFileIns.write(\"\\t\\t\\t\\t\\t\"+writeStr3+\"\\n\")
elif s.find(\"CS_OSLGIS\") != -1:
outFileIns.write(s.replace(\"CS_OSLGIS\",\"CQ_RMW\"))
elif s.find(\"AND A.LONGITUDE >\") != -1:
outFileIns.write(\"\\t\\t\\tAND A.LONGITUDE IS NOT NULL\\n\\t\\t\\tAND A.LONGITUDE IS NOT NULL\\n\\t\\t\\tAND ROWNUM<2\\n\")
elif s.find(\") LOOP\") != -1:
outFileIns.write(\"\\t\\t) LOOP\\n\")
else:
outFileIns.write(s.replace(\"||\')\',2\",\"||\')\',3\"))
#读取并处理文本
def getAndProc(inFileIns,outFileIns):
lines = inFileIns.readlines()
for s in lines:
#print(s)
isTrue(outFileIns,s)
if __name__==\"__main__\":
inFileMod = \"r\"
outFileMod = \"w\"
path = \"D:\\\\rmsdata2gis\"
for tmpFile in os.listdir(path):
inFilePath = path+\"\\\\\"+tmpFile
outFilePath = path+\"\\\\BAK_\"+tmpFile
inFileIns = getFileIns(inFilePath,inFileMod)
outFileIns = getFileIns(outFilePath,outFileMod)
getAndProc(inFileIns,outFileIns)
inFileIns.close()
outFileIns.close()