2012-03-08 17 views
0

opencsv apiを使用してsql resultset dumpから作成したcsvが正常に動作するかどうかを確認する必要があります。 今はCSVWriterを使用してCSVに書き込んでいますが、CSVReaderを使用してcsvの行数を読み取る方法(各結果セット行はCSV形式で1行に保存されていると仮定しています)、結果セットの行数と比較してください。 2つが同じ場合は成功、そうでない場合は失敗です。csvで書かれた行数と結果セットの行数を比較する

  File csvfile = new File ("erpimport_"+ getDateTimeString()+ ".csv"); 
      CSVWriter writer = new CSVWriter(new FileWriter(csvfile), ',','"',';'); 
      boolean includeHeaders = true; 
      ResultSet rs = dbtype.executeQuery(sQuery); 
      writer.writeAll(rs, includeHeaders); 
      writer.close(); 

これはcsvファイルへの書き込みの成功または失敗をテストするための有効な方法をチェックです、次のように私は、CSVファイルに完全な結果セットをダンプするのですか? また、CSVReaderを使用してCSVで行数を取得する方法もあります。私はちょうどチェックし、そこにそれらアウトの束があり、彼らはdidnの

- あなたは行数カウントを使用すると、について話しているCSVReader /ライターに依存し得ることができるかどうか

おかげ Priyank

答えて

1

私は外部のライブラリの機能を検証していた場合、私はおそらくそれを行うには、同じライブラリを使用することはありません。可能な解決策は、BufferedReaderで再びファイルをスキャンし、あなたが行くように、以下のように、行数を作るために次のようになります。

BufferedReader in = new BufferedReader(new File("SomeFile.csv")); 
int lineCount = 0; 
while((String line = in.readLine()) != null) 
    ++lineCount; 

次に、あなたがあなたの期待値とlineCountを比較することができます。もちろん、このチェックを実行する頻度と出力されるファイルのサイズに応じて、これは最も効率的な解決策ではありません。

+0

私は基本的な解決策を稼働させましたが、これはもっと短くなります。ありがとう.. –

0

あなたが使用しているプログラムからのサポートがない場合は、

Mac/Linuxの場合、あなたはあなたが使用しているプログラムからのサポートがない場合、getTotalLines()などのAPI呼び出しを示すようです。単に「wc -l」と書いて、ファイル内の行数を得ることができます。

Windowsの場合、あなたが使用することができます( 'ます。findstr/N/Rで%% N "^":

は/ F "delims =" 用

SETLOCAL enabledelayedexpansion

をオフ@echo "APS-Cfiles.csv"^| %% N

はもちろん

%ライン%は、ヘッダ行のための1を減算することを忘れないでくださいエコー= ')セットの行を実行します。 ""/Cを見つけます!

ベスト、 Shailen

+0

チップをありがとうが、私はJavaを使用してチェックが必要です、OS固有の実装はできません。 –

+0

(CSVWriter).writeAll()は何を返しますか?あなたは値を取得して、それが数値を返すかどうかを知らせますか? また、おそらく既に知っているように、正しく覚えていれば、rs.getInt(0)...を使用して結果セットの行数を取得できます。 Btw、どのJavaライブラリを使用していますか? – ombud

関連する問題