如何使用CSV(平面文件)更新MySQL数据库并在插入之前验证数据

时间:2011-06-16 18:51:02

标签: php mysql validation import flat-file

我有大约40K的记录,我需要每天更新到我的php / mysql应用程序中。 建议的最佳方法是什么?

我对文件中的加载数据进行了一些研究,以便将平面文件加载到临时MySQL表中,并在整个列上运行验证,而不是一次一行地执行验证。稍后使用主键并在数据库中插入/更新。

但是对于具有MultiSelect选项或多个有效值的数据?如何在数据库中更新它们之前验证它们。

选项使用管道分隔。

因此,例如,多选数据是颜色类型 有效值是 红色 绿色 蓝色 棕色 黑色 WHITE

原始值示例案例场景

案例1 需要验证的原始数据 红色| GREEN | YELLOW

如何在临时表中验证此数据,以便RED& GREEN通过验证,YELLOW被剥离并进入错误日志?

如何在具有40K以上记录的csv / tabdelimited平面文件上批量执行上述验证?

1 个答案:

答案 0 :(得分:0)

我喜欢你的评估列而不是逐行的方法,在我看来它会给你带来性能提升。

要添加您的想法,为什么不创建一个函数来验证特定列。对于具有多个正确值的列,您只需将check语句放入switch语句或该函数内部的某些内容。

示例:

//Example function validates a field that contains an integer value
function validateField1($x)
{

   //if necessary you could parse apart the value before "switching" it.

   if(isset($x))
   {
      switch($x)
      {
         case 1: //integer 1 is a valid value
            return true;
         case 3: //integer 3 is a valid value
            return true;
         default://for all other values return false
            return false;
      }
   }
}

通过这种方式,您可以根据具体情况评估字段。除此之外,如果验证函数返回false值,您可以在将.csv文件上载到数据库之前以编程方式编辑。

我不知道这是否适合你,但请告诉我们结果如何!

此致

H