如何排除CSV文件中的重复条目导入MySQL?

时间:2012-01-16 19:44:11

标签: mysql csv

我有一个包含许多重复条目的CSV文件。如何在不导入重复项的情况下将条目导入MySQL?

2 个答案:

答案 0 :(得分:1)

你可以在MySQL中将其中一列(一个你确定会有重复数据的列)定义为UNIQUE,然后导入所有内容,让数据库在重复的条目中吐出错误。

答案 1 :(得分:0)

这是将条目导入MySQL的简单代码,无需导入重复项并计算记录数和重复次数

<?php
$duplicate=0;
$record=0;
$total=0;
$conn=mysql_connect("localhost","root","rootpass","") or die(mysql_error());
mysql_select_db("svn",$conn);
ini_set('max_execution_time', 300);
if(isset($_POST['submit']))
{
$file=$_FILES['file']['tmp_name'];

$handle=fopen($file,"r");
while(($fileop=fgetcsv($handle,1000,",")) !== false)
{
if(! get_magic_quotes_gpc() )
{
$fn= addslashes ($fileop[0]);
$ln=addslashes ($fileop[1]);
$ti=addslashes ($fileop[2]);
$ac=addslashes ($fileop[3]);
$em=addslashes ($fileop[4]);
$op=addslashes ($fileop[5]);
$mp=addslashes ($fileop[6]);
$fx=addslashes ($fileop[7]);
$ad=addslashes ($fileop[8]);
$co=addslashes ($fileop[9]);
$st=addslashes ($fileop[10]);
$ci=addslashes ($fileop[11]);
$zc=addslashes ($fileop[12]);
}
else
{
$fn= $fileop[0];
$ln=$fileop[1];
$ti=$fileop[2];
$ac=$fileop[3];
$em=$fileop[4];
$op=$fileop[5];
$mp=$fileop[6];
$fx=$fileop[7];
$ad=$fileop[8];
$co=$fileop[9];
$st=$fileop[10];
$ci=$fileop[11];
$zc=$fileop[12];
}


$query=mysql_query("SELECT * FROM test WHERE email='$em'");
 if(mysql_num_rows($query)>0)
  {

   $duplicate=$duplicate+1;
  }
else
  {
  $record=$record+1;
$sql=mysql_query("INSERT INTO test(first_name,last_name,title,account,email,officephone,mobphone,fax,address,country,state,city,zipcode) 
VALUES('$fn','$ln','$ti','$ac','$em','$op','$mp','$fx','$ad','$co','$st','$ci','$zc')");
}
}

echo"Data inserted successfully";

echo "<table width='600' cellpadding='5' cellspacing='5' border='1'>";
echo "<tr>"."<td>"."Record inserted"."</td>"."<td>".$record."</td>"."</tr>";
echo "<tr>"."<td>"."duplicate record"."</td>"."<td>".$duplicate."</td>"."</tr>";
echo "<tr>"."<td>"."Total records"."</td>"."<td>".$total=$record + $duplicate."</td>"."</tr>";
echo "</table>";


}

?>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<?
$duplicate=0;
$record=0;
$total=0;
?>
</head>
<body>

<form action="index.php" method="post" enctype="multipart/form-data">
 <input type="file" name="file" value="selectfile"/><br/>
    <input type="submit" name="submit" value="Submit" />
</form>
</body>
</html>