2011-06-16 77 views
2

我有大约40K记录,我需要每天更新到我的php/mysql应用程序中。 建议的最佳方法是什么?如何使用CSV(平面文件)更新MySQL数据库并在插入之前验证数据

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

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

选项使用管道定界。

因此,例如,多选择数据是彩色类型 有效值是 RED GREEN BLUE BROWN BLACK WHITE

原始值示例情况场景是

案例1 原始数据需要验证 RED | GREEN | YELLOW

如何验证此dat在临时表中如此RED & GREEN通过验证并且YELLOW被剥离并进入错误日志?

如何才能批量上执行以上验证的csv/tabdelimited平面文件与40K +记录?

回答

0

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

要添加到您的想法,为什么不创建一个函数来验证特定的列。对于具有多个正确值的列,您只需将您的检查语句放入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; 
     } 
    } 
} 

这样你可以逐案评估对案件的领域。除此之外,如果你的validate函数返回一个错误的值,你可以在上传到数据库之前以编程方式编辑.csv文件。

我不知道这是否适合你,但是让我们知道它是如何变成的!

问候,

ħ