在做一个Java查询.csv文件时,在.csv文件的第一行是表头,根据csv操作文档说明编写代码,表是找到了,可是总是提示
Invalid column name
org.relique.jdbc.csv.CsvStatement.executeQuery(Unknown Source)
等错误提示,最后找到解决办法,就是给表增加表头属性说明各列的名称:
props.put("headerline", "第1列的名称,第2列的名称,第3列的名称,第4列的名称,第5列的名称,第6列的名称,第7列的名称");
示例代码如下:
http://blog.csdn.net/aminfo/article/details/7853570
String csvDir = "myCsv"; //设置csv文件所在的目录文件夹 String csvFile = "test"; //设置csv的文件名称,不要加扩展名 Class.forName("org.relique.jdbc.csv.CsvDriver"); Properties props = new java.util.Properties(); props.put("separator", ","); props.put("suppressHeaders", "true"); //false表示第一行为表头而非数据 props.put("headerline", "第1列的名称,第2列的名称,第3列的名称,第4列的名称,第5列的名称,第6列的名称,第7列的名称"); //设置表头字段名称,也就是每一列的名称 props.put("fileExtension", ".csv"); //文件扩展名 props.put("charset", "GB2312"); //编码 props.put("ignoreHeaderLineNumber", "0"); //跳过行数 Connection conn = DriverManager.getConnection("jdbc:relique:csv:" + csvDir, props); Statement stmt = conn.createStatement(); ResultSet results = stmt.executeQuery("SELECT * FROM " + csvFile); while (results.next()) { System.out.println("第1列= " + results.getString("第1列的名称")); } results.close(); stmt.close(); conn.close();