java代码如何读取csv文件中的空值

时间:2013-02-15 10:07:02

标签: java csv

我在包含多行的文件中有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**

2 个答案:

答案 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文件(即自动转义嵌入式引用字符)
  •