我们如何验证CSV文件?
我有一个CSV文件结构:
Date;Id;Shown 15-Mar-10;231;345 15-Mar-10;232;346 and so on and on !!! approx around 80,000 rows.
在开始使用fgetcsv进行解析之前,如何验证此CSV文件?
我不会尝试手动验证文件:我宁愿更愿意逐行处理,分别处理每一行:
>读一行
>验证没关系
>使用数据
>并转到下一行.
现在,什么可以“验证它的确定”意味着?
>至少:确保我可以读取行为CSV,与我的正常的一组功能(也许fgetcsv,也许一些其他功能特定于我的项目 – 无论如何,如果我无法读取一行,我的功能读取数百,它是可能是因为那条线有问题)
>然后,检查字段的数量
>然后,对于每个字段,检查它是否包含“有效”数据
>强制性选项?
>数字?
>字符串?
>日期?
>等等
>那么,一些更仔细的检查
例如,对于“代码”字段:它是否对应于我的应用程序合法的值?
如果一切顺利 – 好吧,不用多做,除了使用数据;-)
当你完成一行,只要重复下一个.
当然,如果要在完成任何数据库(或任何类似的)写入之前接受或拒绝整个文件,则必须:
>逐行解析文件,应用“验证”的想法
>将每行的数据存储在内存中
>并且当整个文件被读取到内存时,
在具体情况下,您有三种字段:
Date;Id;Shown 15-Mar-10;231;345 15-Mar-10;232;346
从我可以猜到:
>第一个必须是一个约会
>使用一些正则表达式验证这不容易:每个月不一样的天数,有几个月,根据年份,在二月不一样的天数…
>在这种情况下,我可能会尝试用strtotime
解析日期(不知道你使用的格式是否正常)
>或者我只是explode
的字符串
确保有三个部分
>第三个是2位数
>第二个是1月,2月,3月之间的…
>第一个对应于正确的天数,这取决于其他两个天数
>第二个:
>必须是一个整数
>必须是您的数据库中存在的有效值?
>如果是这样,一个简单的SQL查询将允许您检查
>对于第三个,不太确定…
>我猜这是一个整数吗?