0

opencsvapiを使用してSQL結果セットダンプから作成した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への書き込みの成功または失敗をテストするための有効な方法ですか?また、CSVReaderを使用してCSVの行数を取得するにはどうすればよいですか。

Priyankに感謝します

4

2 に答える 2

1

外部ライブラリの機能を検証している場合、同じライブラリを使用して検証することはおそらくないでしょう。考えられる解決策は、次のように、ファイルをもう一度スキャンしBufferedReader、行数を数えることです。

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

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

于 2012-03-08T01:15:01.667 に答える
0

行番号カウントを取得できるかどうかは、話しているCSVReader/Writerによって異なります-

確認したところ、たくさんありますが、getTotalLines()などのAPI呼び出しを示していないようですが、すべてを確認していませんでした。使用しているプログラム、

Mac / Linuxの場合、「wc -l」と言うだけで、もちろん引用符なしで、ファイルの行数を取得できます。

Windowsの場合、次を使用できます。

@エコーオフ

setlocal enabledelayedexpansion

for / f "delims =:" %% N in('findstr / N / R "^" "APS-Cfiles.csv" ^ | find / C ":"')do set lines = %% N

エコー%lines%

もちろん、ヘッダー行の1を引くことを忘れないでください!

最高、シャイレン

于 2012-03-08T00:57:20.777 に答える