我在包含多行的文件中有csv。如果第一列值没有,它会给出错误并且无法在数据库中插入。 前 如果row是:130,1,datafile8.csv,2007,17,List_date在读取n插入时没有问题 但如果row是:,0,datafile8.csv,Bihar,7,list_Left,无法读取n insert .how在上面的行中插入null .so我可以在数据库中插入dis行。
String keyword = "celldescription.csv";
File makefile = new File(keyword);
BufferedReader r2 = new BufferedReader(new FileReader(makefile));
strLine1 = r2.readLine();
System.out.println (strLine1);
String r="0";int r1=0;
while((strLine1=r2.readLine())!=null)
{
System.out.println (strLine1);
StringTokenizer st2 = new StringTokenizer(strLine1, ",");
// Print the content on the console
String cellvalue = st2.nextToken();
String position = st2.nextToken();
String Docid=st2.nextToken();
String Word=st2.nextToken();
String Count=st2.nextToken();
String List_Entry=st2.nextToken();
String tab3="insert into description(cellvalue,position,Docid,Word,Count,List_Entry) values(?,?,?,?,?,?)";
ps = connection.prepareStatement(tab3);
ps.setString (1,cellvalue );
ps.setString (2,position );
ps.setString (3,Docid);
ps.setString (4,Word );
ps.setString (5,Count );
ps.setString (6,List_Entry );
ps.executeUpdate();
}//end of while
r2.close();
System.out.println("Data is inserted");
}//try closed**
答案 0 :(得分:2)
当您的String strLine1
以逗号(,)StringTokenizer
开头时,如果它位于开头或结尾,或者甚至介于两者之间,则省略空字符串。
前 - ,0,datafile8.csv,Bihar,7,list_Left
令牌 - > "0" - "datafile8.csv" - "Bihar" - "7" and "list_Left"
最好用逗号(,)分割字符串。 前 -
String[] str = strLine1.split(",",-1);
str [] - > ["","datafile8.csv","Bihar","7" and "list_Left"]
答案 1 :(得分:1)
您可能需要考虑使用java库来处理csv文件。 OpenCSV是一个,它给了我很多帮助。
它的一些功能:
- 每行任意数量的值
- 忽略引用元素中的逗号
- 处理带有嵌入式回车符的引用条目(即跨越多行的条目)
- 可配置的分隔符和引号字符(或使用合理的默认值)
- 一次阅读所有条目,或使用Iterator样式模型
- 从String []创建csv文件(即自动转义嵌入式引用字符)