2014-12-19 68 views
0

我在使用jdbc連接連接平面文件(.txt,.xml,.csv,.xls等)時存在應用程序自身存在的問題。使用java jdbc連接平面文件

搜索後,我發現下面的一些建議。

1)xlsql
2)JDO

我試圖與第一個(xlsql),下面是該過程。 首先創建核心Java項目並加載來自xlsql的jar文件。下面 是代碼

Class.forName("com.nilostep.xlsql.jdbc.xlDriver"); 
final String dir = System.getProperty("user.dir")+"\\db\\xl"; 
conn = DriverManager.getConnection("jdbc:nilostep:excel:/"+dir); 
Statement stmt = con.createStatement(); 
String sql = "select * from Sheet1$"; 
ResultSet rs = stmt.executeQuery(sql); 
if(rs.next()){ 
System.out.println(rs.getString(1)); 
}else{ 
System.out.println("nodata...."); 
} 

跟它不存在的工作表Sheet1 $表。

請幫幫我。

回答

0

xlsql的原理有點複雜,它使用hsqldb或mysql作爲sql引擎,使用excels文件中的數據創建相關數據庫和表,然後在數據庫上執行查詢。它看待:

directory -> database 
    excel file -> schema 
    sheet -> table 

所以它使用模式前綴訪問表。例如:

String sql = "select * from \"demo.xlsqly7\""; 

這裏的「demo」是沒有擴展名的excel文件名,xlsqly7是表名。在「XlSQL-Y8.zip」或「xlsql-Y7.zip」中,有一個「TestXlsql.java」示例。我也寫了另一個問題:

public static void main(String[] args) throws Exception { 
    Class.forName("com.nilostep.xlsql.jdbc.xlDriver"); 
    String dir = "C:\\Temp\\xlsql-Y7"; 
    Connection con = DriverManager.getConnection("jdbc:nilostep:excel:"+dir); 
    Statement stmt = con.createStatement(); 
    String sql = "select * from \"Book1.MergedResult\""; 
    ResultSet rs = stmt.executeQuery(sql); 
    if(rs.next()) 
    { 
     System.out.println(rs.getString(1)); 
    } 
    else{ 
     System.out.println("nodata...."); 
    } 

} 

另一個制約因素是,片材的第一行必須是必須以大寫字母開頭的列名,或表將被視爲無效。

這是關於XLSQL的最佳文檔:http://blog.csdn.net/ailvey/article/details/8779119,不幸的是,它是用中文書寫的。

+0

xlsql是否支持xlsx文件?我認爲這取決於不支持xlsx文件的jxl。所以,我認爲這個庫不支持xlsx文件。我對麼? – user7 2017-01-12 18:40:22