我正在处理包含多个列(变量)的.csv
文件。
这些变量中的每一个都可能是Decimal
,VARCHAR
或Date
类型。
如果某列包含所有数字,则为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阅读器中有更好的方法或命令可以快速执行此操作吗? 谢谢!
答案 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
作为该列的数据类型。
希望有所帮助。