【问题标题】:How to return datatypes using CSV Reader API in Java如何在 Java 中使用 CSV Reader API 返回数据类型
【发布时间】:2014-01-28 05:19:04
【问题描述】:

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

如果一列包含所有个数字,则为Decimal;如果 all 日期然后 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 阅读器中是否有更好的方法或命令可以快速完成此操作? 谢谢!

【问题讨论】:

    标签: java csv


    【解决方案1】:

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

    因为您在问题中声明

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

    如果有 1000 个十进制成员和 1 个最后的日期,则必须检查列中的每个成员,您必须检查整个列才能知道它的类型为 VARCHAR。您可以优化的一件事是跟踪列中存在的数据类型,如果存在 >= 2 个数据类型,则终止该列并返回 VARCHAR 作为该列的数据类型。

    希望对您有所帮助。

    【讨论】:

    • +1 这是正确的。如果列中至少有一个non Date 值,尽管所有其他值都是Date,则它是VARCHAR。我希望CSV Reader 有一些捷径
    猜你喜欢
    • 2016-02-15
    • 1970-01-01
    • 1970-01-01
    • 2012-01-13
    • 1970-01-01
    • 2019-05-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多