我有一個龐大的代碼庫,它有很多JAVA和.sql文件。我打算從所有這些文件中提取所有SQL語句。從Java/SQL文件中提取SQL語句
這裏是我打算實現這一目標的方式 - 我打算提取
- 構建包含像SELECT,INSERT模式的正則表達式文件,刪除,更新等。
- 在代碼庫中逐行解析文件,並與Regex進行匹配。如果找到匹配項,請註冊代碼行,文件名,圖案等。
問題出現在SQL查詢分成多行時。
我使用java.util.regex.Matcher和java.util.regex.Pattern方法在使用緩衝讀取器讀取行時構建/匹配正則表達式模式。
pattern = Pattern.compile(regexString,Pattern.CASE_INSENSITIVE);
.
.
matcher = pattern.matcher(lineBuffer.readline().trim());
if(matcher.find()){
//Do something
}
多行語句, 我應該尋找行結束「;」 - 如果找不到,我可以讀取下一行,並將輸出追加到匹配的字符串中,以便將其理解爲單個查詢。
while(!lineString.endsWith(";")) {
lineString = lineString + lineBfr.readLine().trim();
}
有沒有更好的方式來實現的解決方案的需求在這裏使用Pattern.MULTILINE或使用StreamBuffers在那裏我將整個文件讀入一個緩衝區和工藝進一步?