使用java jdbc连接Flat文件

时间:2014-12-19 09:23:52

标签: java excel csv jdbc flat-file

我在使用jdbc连接连接平面文件(.txt,.xml,.csv,.xls等等)时出现问题,该文件存在于应用程序中。

搜索后,我在下面找到了一些建议。

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 $表不存在。

请帮帮我。

1 个答案:

答案 0 :(得分:0)

xlsql的原理有点复杂,它使用hsqldb或mysql作为sql引擎,使用excels文件中的数据创建相关数据库和表,然后通过数据库执行查询。它对待:

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

所以它使用模式前缀访问表。例如:

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

这里"演示"是没有扩展名的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,遗憾的是,它是用中文编写的。