如果我有一個名爲File.txt
的文本文件,其中包含一些數據。例如:如何解析Java中的SQL查詢?
55 90
10 45
33 23
10 500
5 2
當第一列被稱爲列C1
和第二C2
。
然後,我有一個名爲Input.txt
兩個SQL查詢另一個文件:
SELECT *
FROM File
WHERE C2 > 60;
SELECT C1
FROM File;
什麼是解析該文件並生成看起來像什麼,我會從一個真正的DBMS得到一個輸入的一種方式?
到目前爲止,我已經試過這樣:
// 1. Read the file.
Main obj = new Main();
URL url = obj.getClass().getResource("File.txt");
File file = new File(url.toURI());
FileReader fileReader = new FileReader(file);
BufferedReader bufferReader = new BufferedReader(fileReader);
StringBuffer stringBuffer = new StringBuffer();
String line;
while ((line = bufferReader.readLine()) != null) {
stringBuffer.append(line);
stringBuffer.append("\n");
}
fileReader.close();
String data = stringBuffer.toString(); //this contains the data from File.text
String[] list = data.split(" "); //this stores it into a list
// 2. Read the input file.
Main input = new Main();
URL urlInput = input.getClass().getResource("Input.txt");
File inputFile = new File(urlInput.toURI());
FileReader fileReaderInput = new FileReader(inputFile);
BufferedReader bufferedReaderInput = new BufferedReader(fileReaderInput);
StringBuffer stringBufferInput = new StringBuffer();
String lineInput;
while ((lineInput = bufferedReaderInput.readLine()) != null) {
stringBufferInput.append(lineInput);
stringBufferInput.append("\n");
}
但我這裏迷路...我不知道如何解析查詢。我的程序設法讀取這兩個文件,但是當處理輸入文件中的查詢時,我似乎無法弄清楚它的邏輯。
所以你基本上必須做一個簡潔的SQL解釋器? Tokenize,定義語法,構建表達式樹,然後評估。基本上是編程語言的所有步驟。祝你好運。 – ryanyuyu
是的,這基本上就是我想要做的。 – TRX
這是一些功課嗎?只是好奇你爲什麼需要這樣的功能。解釋sql查詢的方式與解釋任何語言的方法相同,你必須構建一個sql [解釋器](http://en.wikipedia.org/wiki/Interpreter_%28computing%29)看一看在此鏈接查看口譯員是什麼。我與@ryanyuyu祝你好運,你需要。 –