2

複数の行を含むファイルにcsvがあります。最初の列の値が何もない場合、エラーが発生し、データベースに挿入できません。ex 行が :130,1,datafile8.csv, 2007 ,17,List_date の場合 n を挿入しても問題ありませんが、行が ,0,datafile8.csv,Bihar,7,list_Left の場合、n を読み込めません insert .how上記の行にnullを挿入するには、データベースに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**
4

2 に答える 2

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"]

于 2013-02-15T10:15:46.530 に答える
1

csv ファイルでの作業に Java ライブラリの使用を検討することをお勧めします。 OpenCSVはその 1 つで、とても役に立ちました。

その機能のいくつか:

  • 1 行あたりの任意の数の値
  • 引用された要素のコンマを無視する
  • キャリッジ リターンが埋め込まれた引用エントリ (つまり、複数行にわたるエントリ) の処理
  • 構成可能な区切り文字と引用符 (または実用的なデフォルトを使用)
  • 一度にすべてのエントリを読み取るか、Iterator スタイル モデルを使用します
  • String[] からの csv ファイルの作成 (つまり、埋め込まれた引用文字の自動エスケープ)
于 2013-02-15T10:25:57.817 に答える