如何使用Java中的CSV Reader API返回数据类型

时间:2014-01-09 15:09:28

标签: java csv

我正在处理包含多个列(变量)的.csv文件。 这些变量中的每一个都可能是DecimalVARCHARDate类型。

如果某列包含所有数字,则为Decimal;如果所有日期然后Date;否则默认值为VARCHAR


我知道一种方法可以通过检查数据集中的 EACH 值来确定这一点。

CSVReader reader = new CSVReader (new FileReader(.....));
        String row [] = reader.readNext();
            while ((row = reader.readNext()) !=null ) {
                // I go through EACH value to see if it is `Decimal` , `VARCHAR` , or `Date` 
            }
        }
        reader.close();

然而,上述方法很慢。

CSV阅读器中有更好的方法或命令可以快速执行此操作吗? 谢谢!

1 个答案:

答案 0 :(得分:1)

是否可以检查列的子集,然后该子集是否是某种数据类型,假设其余的是相同的数据类型?或者,如果您的列数大量为Date且有一个非日期值,则会自动为VARCHAR

既然你在问题中说明了

If a column contains all numbers , then it is Decimal, if all date then Date , otherwise the default is VARCHAR.

如果有1000个Decimal成员和1个Date,则必须检查列中的每个成员,您必须检查整个列以确定它是VARCHAR类型。您可以优化的一件事是跟踪列中存在的数据类型,如果有> = 2数据类型,则终止该列并返回VARCHAR作为该列的数据类型。

希望有所帮助。