【发布时间】:2012-03-26 12:58:32
【问题描述】:
我在这里遇到了一个特殊的问题。我有一个脚本,它基本上使用 php 中的fgetcsv() 将 CSV 文件导入数据库。这样做完全没有问题,我也可以使用 MySQL 语法 ON DUPLICATE KEY UPDATE 更新旧条目(我绝不是 MySQL 专家,因此我在这里问)。
以下是那部分代码:
$handle = fopen($file,"r");
fgetcsv($handle, 1000, ",");//skip first row since they are headers
while(($fileop = fgetcsv($handle, 1000, ",")) !== false) //read line by line into $fileop
{
//read array values into vars
$item1 = $fileop[0];
$item2 = $fileop[1];
$key = $fileop[2];
// and a couple more
// now INSERT / UPDATE data in MySQL table
$sql = mysql_query("INSERT INTO table (item1,item2,key)
VALUES ('$item1','$item2','$key')
ON DUPLICATE KEY UPDATE item1='$item1',item2='$item2'");
}
这一切都很好。我坚持的是,一些条目可能已从实际的 CSV 中删除(因为密钥可能不再存在)。我想做的是从 MySQL 表中删除 CSV 中不再存在的条目。
意味着如果$key 从 CSV 中消失,也会删除数据库表中的该行。我想我会在对 MySQL 表运行插入/更新查询之前执行此操作?
如果有任何帮助,我将不胜感激。
【问题讨论】:
标签: php mysql csv import compare