Inserting CSV to MySQL



我想在MySQL中插入一个CSV。如果MySQL表中存在列sha1,我如何才能更新我的表?如果列sha1已存在,请将其插入。

我有这个代码来插入csv:

while(($csvdata = fgetcsv($handle,10000,","))!== FALSE){
if($i>0) {
$sha1 = $csvdata[0];
$vsdt = $csvdata[1];
$trendx  = $csvdata[2];
$notes  = $csvdata[3];
$sql = "INSERT INTO jeremy_table_trend (date_sourced,sha1,vsdt,trendx,notes) VALUES ('$date','$sha1','$vsdt','$trendx','$notes')";
$query = mysqli_query($con , $sql);
$c = $c+1;
error_reporting(E_ALL ^ E_NOTICE);
}
$i++;
error_reporting(E_ALL ^ E_NOTICE);
}

检查一下,这可能会帮助你

<?php
while(($csvdata = fgetcsv($handle,10000,","))!== FALSE){
if($i>0) {
$sha1 = $csvdata[0];
$vsdt = $csvdata[1];
$trendx  = $csvdata[2];
$notes  = $csvdata[3];
// Get record where sha1 
$check_sha = "SELECT sha1 FROM jeremy_table_trend WHERE sha1='".$sha1."'";
$check_shaquery = mysqli_query($con , $check_sha);
if($check_shaquery){
$sha_count = mysqli_num_rows($check_shaquery);
}
// Check if sha1 already in database
if(isset($sha_count) && $sha_count>0){
$sql = "UPDATE `jeremy_table_trend` SET `date_sourced`='".$date."',`sha1`='".$sha1."',`vsdt`='".$vsdt."',`trendx`='".$trendx."',`notes`='".$notes."' WHERE sha1='".$sha1."'";
$query = mysqli_query($con , $sql);
}else{
$sql = "INSERT INTO jeremy_table_trend (date_sourced,sha1,vsdt,trendx,notes) VALUES ('$date','$sha1','$vsdt','$trendx','$notes')";
$query = mysqli_query($con , $sql);
}
$c = $c+1;
error_reporting(E_ALL ^ E_NOTICE);
}
$i++;
error_reporting(E_ALL ^ E_NOTICE);
}
?>
请注意,这是2018年。不再需要过程化的低级代码。看看像Spout这样的库,读取CSV并使用PDO对数据库进行面向对象的访问。

我假设列sha1有一个UNIQUE索引集?如果没有,它应该。然后,您可以在一个简洁的SQL语句中使用INSERT。。。关于重复密钥更新语法:

$sql = "INSERT INTO jeremy_table_trend (date_sourced,sha1,vsdt,trendx,notes) VALUES ('$date','$sha1','$vsdt','$trendx','$notes') ON DUPLICATE KEY UPDATE";

除了检查数据库中是否存在具有相同哈希的条目外,您还可以使用ORM层来处理这一问题。

最新更新