对于来自不同来源的大量巨大的csv文件(100M行+),我需要一个快速片段或库来自动猜测日期格式并将其转换为故障时间或unix时间戳。一旦成功猜到,该片段必须能够检查日期字段的后续出现是否有效,因为日期格式可能会在整个文件中发生变化。
日期格式的测试集必须是可变的,但是编译最佳决策树或者来自多个给定日期格式的东西都可以。
我得出的结论是,这种类型不存在但是必须进行“市场调查”,因此我的问题。
我的第一次尝试是模仿我迄今为止观察过的23种不同日期格式的getdate(),并用优化版本替换数字解析器,将日期特定的特征考虑在内(不是'4'到'9'in当天的部分,月份部分中没有“3”到“9”,等等。
有没有人遇到过类似的问题,甚至还没有出现类似的代码?
答案 0 :(得分:1)
我使用Perl脚本处理来自众多来源的50多种格式的带时间戳的传感器数据(结构上为CSV)。从来没有限制功能,虽然它是基于脚本的,它相当快(> 10Klines /秒,其中行是~60-100chars) 我实施了 a)分析前几百行,倒回然后再运行 ...为决策逻辑建立上下文。 b)发出带有行号和上下文的错误行 ...所以在运行结束时可以编辑有问题的行然后将它们设置为在后续运行中重新插入,因此它可以无错误地传递“修补”,即每行都匹配一个格式。 c)线之间的时差 ......只允许增加时间戳。 d)我也可以重新格式化其他东西,比如改变单位,即帝国到SI。 虽然来自C阵营,简单的Perl并不是太陌生,但却让它变得如此简单 注意如果文件中有足够的信息,此方法可以处理10/04/05之类的问题,即DD / MM / YY或MM / DD / YY
答案 1 :(得分:1)
经过两周的googlE网页浏览后,我得出的结论是我必须自己写这篇文章。 FTW,我第一次参加它:http://github.com/hroptatyr/glod