如何使用 CSV(平面文件)更新 MySQL 数据库并在插入前验证数据
Posted
技术标签:
【中文标题】如何使用 CSV(平面文件)更新 MySQL 数据库并在插入前验证数据【英文标题】:How to Update MySQL Database with CSV(flat-file) and validate data before insertion 【发布时间】:2011-09-16 15:32:49 【问题描述】:我每天需要将大约 40K 记录更新到我的 php/mysql 应用程序中。 推荐的最佳方法是什么?
我对在文件中加载数据进行了一些研究,以将平面文件加载到临时 MySQL 表中并在整个列上运行验证,而不是一次一行地进行。稍后使用主键并在数据库中插入/更新。
但是对于具有多选选项或多个有效值的数据?我如何在数据库中更新它们之前验证它们。
选项使用管道分隔。
例如,多选数据是颜色类型 有效值为 红色的 绿色 蓝色 棕色的 黑色的 白色
原始值示例案例场景是
案例 1 需要验证的原始数据 红色|绿色|黄色
如何在临时表中验证这些数据,以便 RED 和 GREEN 通过验证而 YELLOW 被剥离并进入错误日志?
如何在具有 40K 多条记录的 csv/tabdelimited 平面文件中批量执行上述验证?
【问题讨论】:
【参考方案1】:我喜欢你评估列而不是逐行的方法,在我看来,这会给你带来性能提升。
为了增加您的想法,为什么不创建一个函数来验证特定列。对于具有多个正确值的列,您只需将您的检查语句放入 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 函数返回 false 值,您可以在将 .csv 文件上传到数据库之前以编程方式对其进行编辑。
我不知道这是否适合你,但请告诉我们结果如何!
问候,
H
【讨论】:
以上是关于如何使用 CSV(平面文件)更新 MySQL 数据库并在插入前验证数据的主要内容,如果未能解决你的问题,请参考以下文章