gpt4 book ai didi

php - 如何在没有重复条目的情况下使用 PHP 将大型 CSV 文件上传到 MySQL?

转载 作者:行者123 更新时间:2023-11-29 02:50:17 26 4
gpt4 key购买 nike

我需要上传一个大的 CSV 到 MySQL,如果上传中断我必须从我停止的地方开始,没有重复的条目。如果进程中断,那么它应该从我自动结束的地方重新启动(即:如果在 123 个条目后上传中断,那么它应该在下一次运行时从 124 恢复)

CSV 文件格式:

latitude longitude 
6.5486 72.456
4.2186 74.466
5.5486 82.956

我只需要一个具有相同纬度和经度的条目,目前我正在使用下面的代码(有效)但我不知道如果上传中断如何从断点开始。

<?php  
error_reporting(0);
require("connection.php");//connect to the database
if ($_FILES[csv][size] > 0){
//get the csv file
$file = $_FILES[csv][tmp_name];
echo $fname = $_FILES['csv']['name'];
echo $ftype = end(explode('.', strtolower($fname)));
if($ftype=="csv"){
$handle = fopen($file,"r");
//loop through the csv file and insert into database
do {
if ($data[0]) {
$latitude=$data[0];
$longitude=$data[1];
$location1=$data[2];
$location2=$data[3];
$location3=$data[4];
$sql = "SELECT * FROM latitude_longitude WHERE latitude ='$latitude' AND longitude='$longitude' ";
$result=mysql_query($sql);
if( mysql_num_rows($result) > 0){
mysql_query("UPDATE latitude_longitude SET latitude = '$latitude',longitude = '$longitude',location1='$location1', location2='$location2',location3='$location3',status=status+1 WHERE latitude = '$latitude' AND longitude = '$longitude'");
}
else{
mysql_query("INSERT INTO latitude_longitude (latitude, longitude, location1, location2, location3, status, date) VALUES
(
'".addslashes($data[0])."',
'".addslashes($data[1])."',
'".addslashes($data[2])."',
'".addslashes($data[3])."',
'".addslashes($data[4])."',
'1',
CURRENT_TIMESTAMP
)
");
}
}
} while ($data = fgetcsv($handle,1000,",","'"));
//redirect
header('Location:GeoLocation.php?success=1'); die;

}else{
header('Location:GeoLocation.php?success=2'); die;

}
}
?>

感谢您提前提供帮助。

最佳答案

在经度、纬度上创建唯一键

然后你可以使用类似下面的东西

LOAD DATA LOCAL INFILE 'c:\\temp\\filename.csv'
replace
INTO TABLE table_name
FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"'
LINES TERMINATED BY '\r\n'
IGNORE 1 LINES
(@col1,@col2,@col3)
set
column1 = @col1,
column2= @col2,
column3= @col3;

这将替换重复的 long,lat 并插入新的

关于php - 如何在没有重复条目的情况下使用 PHP 将大型 CSV 文件上传到 MySQL?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36717272/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com