我有一个 CSV 文件,已成功导入到数据库表中。
随着时间的推移,我将使用新数据更新此 CSV 文件,因此我想知道是否导入包含已插入表中的行的同一文件,是否有办法避免再次添加重复项?.
在研究时,我遇到了一个名为“忽略重复行”的选项,但是导入选项中不存在该选项。
我正在使用打包在 XAMPP 内的 PHP 我的管理员。
这是•版本信息:4.2.7.1,最新稳定版本:4.2.8
最佳答案
向您认为应该唯一的数据库列添加唯一键
这是我为上传 csv 文件所做的代码,它将停止插入找到的值,也许会对您有所帮助。
使用重复 key 更新
<?php
$conn=mysql_connect("localhost","root","");
$db=mysql_select_db("dbname");
$csv_file="/path/to/file";
$savefile="filename.csv";
$handle = fopen($csv_file, "r");
$i=0;
while (($data = fgetcsv($handle, 1000, ",")) !== FALSE) { //2nd param is for memory limit use it if u know what u are doing
if($i>0){
$import="INSERT into table_name(col0,col1,col2,col3)values('".addslashes($data[0])."','".addslashes($data[1])."','".addslashes($data[2])."','".addslashes($data[3])."')ON DUPLICATE KEY UPDATE col2= '".addslashes($data[1])."'";
mysql_query($import) or die(mysql_error());
}
$i=1;
}
?>
干杯
关于PHP 我的管理员 no 用于导入 CSV 文件的忽略重复行选项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25607957/