将csv中写入的行数与结果集行数进行比较

时间:2012-03-08 00:34:13

标签: java opencsv

我需要确保使用opencsv api从sql resultset dump创建的csv是否成功运行。 现在我正在使用CSVWriter写入csv,现在我将如何使用CSVReader读取csv中的行数(假设每个结果集行以CSV格式保存在1行中)并将该计数与结果集行计数进行比较。 如果两者相同则成功或失败。

我将完整的结果集转储到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

2 个答案:

答案 0 :(得分:1)

如果我正在验证外部库的功能,我可能不会使用相同的库来执行此操作。一种可能的解决方案是使用BufferedReader再次扫描文件,并按照以下步骤计算行数:

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

然后,您可以将lineCount与预期值进行比较。当然,这可能不是最有效的解决方案,具体取决于您要执行此检查的频率以及文件输出的大小。

答案 1 :(得分:0)

您是否可以获得行号计数取决于您正在谈论的CSVReader / Writer -

我刚检查过,其中有一堆它们似乎没有表明任何API调用getTotalLines()或其他一些这样但我没有检查它们的每一个:在没有来自您正在使用的程序的支持,

对于Mac / Linux,您可以简单地说:“wc -l”,当然没有引号,以获取文件中的行数

对于Windows,您可以使用:

@echo off

setlocal enabledelayedexpansion

for / f“delims =:”%% N in('findstr / N / R“^”“APS-Cfiles.csv”^ | find / C“:”')do lines lines = %% N < / p>

echo%lines%

当然,不要忘记为标题行减去1!

最佳, Shailen