csv文件列名为中文,读取时报错如下,各位大牛帮忙看下:Exception in thread "main" org.relique.jdbc.csv.TokenMgrError: Lexical error at line 1, column 1. Encountered: "\u8bc1" (35777), after : ""
at org.relique.jdbc.csv.ExpressionParserTokenManager.getNextToken(ExpressionParserTokenManager.java:654)
at org.relique.jdbc.csv.ExpressionParser.jj_ntk(ExpressionParser.java:825)
at org.relique.jdbc.csv.ExpressionParser.queryEnvEntry(ExpressionParser.java:403)
at org.relique.jdbc.csv.ExpressionParser.parseQueryEnvEntry(ExpressionParser.java:358)
at org.relique.jdbc.csv.SqlParser.parse(SqlParser.java:139)
at org.relique.jdbc.csv.CsvStatement.executeQuery(CsvStatement.java:326)
at Package_Project2.MergeCSV.MergeCSVAuto(MergeCSV.java:33)
at Package_Project2.MergeCSV.main(MergeCSV.java:48)调用代码如下:
public void MergeCSVAuto(){
try {
Class.forName("org.relique.jdbc.csv.CsvDriver");
//设置一些属性
Properties props = new java.util.Properties();
props.put("separator",","); // 确定分隔符
props.put("suppressHeaders","false"); // 设置是否包含首行,false为首行为标题,true首行为内容,默认为false
props.put("fileExtension",".csv"); // 文件类型.csv
props.put("charset","GB2312"); //设置编码,如果csv编码为utf8则需要改成utf-8
//获取到链接,注意resources\\csv为我的.csv文件所在目录*(需要自己修改为你的.csv所在的目录)
Connection conn = DriverManager.getConnection("jdbc:relique:csv:D:\\hld"
,props);
//获取Statement语句(Statement 对象用于将 SQL 语句发送到数据库中)
Statement stmt = conn.createStatement();
//执行结果,注意这条语句跟数据库的查询语句是完全一样的,*可以拿.csv的列头取代
String inputKeyType = "国家代码";
// ResultSet results = stmt.executeQuery("SELECT InnerName from keyMap where InnerCode="+innerCode);
ResultSet results = stmt.executeQuery("SELECT " + inputKeyType+" from hld20110809");
while(results.next()){
System.out.println(results.getString(inputKeyType));
}
results.close();
stmt.close();
// ps.close();
conn.close();
}catch(Exception e){
System.out.println(e.getMessage());
}
}
at org.relique.jdbc.csv.ExpressionParserTokenManager.getNextToken(ExpressionParserTokenManager.java:654)
at org.relique.jdbc.csv.ExpressionParser.jj_ntk(ExpressionParser.java:825)
at org.relique.jdbc.csv.ExpressionParser.queryEnvEntry(ExpressionParser.java:403)
at org.relique.jdbc.csv.ExpressionParser.parseQueryEnvEntry(ExpressionParser.java:358)
at org.relique.jdbc.csv.SqlParser.parse(SqlParser.java:139)
at org.relique.jdbc.csv.CsvStatement.executeQuery(CsvStatement.java:326)
at Package_Project2.MergeCSV.MergeCSVAuto(MergeCSV.java:33)
at Package_Project2.MergeCSV.main(MergeCSV.java:48)调用代码如下:
public void MergeCSVAuto(){
try {
Class.forName("org.relique.jdbc.csv.CsvDriver");
//设置一些属性
Properties props = new java.util.Properties();
props.put("separator",","); // 确定分隔符
props.put("suppressHeaders","false"); // 设置是否包含首行,false为首行为标题,true首行为内容,默认为false
props.put("fileExtension",".csv"); // 文件类型.csv
props.put("charset","GB2312"); //设置编码,如果csv编码为utf8则需要改成utf-8
//获取到链接,注意resources\\csv为我的.csv文件所在目录*(需要自己修改为你的.csv所在的目录)
Connection conn = DriverManager.getConnection("jdbc:relique:csv:D:\\hld"
,props);
//获取Statement语句(Statement 对象用于将 SQL 语句发送到数据库中)
Statement stmt = conn.createStatement();
//执行结果,注意这条语句跟数据库的查询语句是完全一样的,*可以拿.csv的列头取代
String inputKeyType = "国家代码";
// ResultSet results = stmt.executeQuery("SELECT InnerName from keyMap where InnerCode="+innerCode);
ResultSet results = stmt.executeQuery("SELECT " + inputKeyType+" from hld20110809");
while(results.next()){
System.out.println(results.getString(inputKeyType));
}
results.close();
stmt.close();
// ps.close();
conn.close();
}catch(Exception e){
System.out.println(e.getMessage());
}
}
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货