将几何特征更改为现有数据库

问题描述:

我正在使用脚本将几何特征导入数据库。我将花费下面的脚本。如果导入所有geo_features,该脚本将很有效。然而,我的问题是,如果我想改变一些功能,那么这个脚本将删除整个表格,并只输入更改。由于我正在导入的文件只有新增功能或需要进行的更改。将几何特征更改为现有数据库

该表格包含1000行。所以清空它等不是一个选项。

有人可以指导我如何修改这个脚本,这样如果我想添加到数据库中的现有表,或者更改已经在数据库表中的行吗?

脚本:

<?php 
define('DBHOST', 'localhost'); 
define('DBUSER', 'root'); 
define('DBPASS', ''); 
define('DBNAME', 'sample'); 

$conn = mysqli_connect(DBHOST,DBUSER,DBPASS,DBNAME); 
$file=file_get_contents("wf.geojson"); 
$contents=json_decode($file); 
echo "processing..."; 
mysqli_query($conn,"DELETE FROM geo_features") or die("delete error"); 
for($i=0;$i<count($contents->features);$i++){ 
    $type=$contents->features[$i]->properties->type; 
    $name=$contents->features[$i]->properties->name; 
    $aisle=$contents->features[$i]->properties->aisle; 
    $floormap_id=$contents->features[$i]->properties->id; 
    $g=$contents->features[$i]->geometry->coordinates[0]; 
    $gt=$g[0][0]." ".$g[0][1]; 
    for($j=1;$j<count($g);$j++){ 
     $gt.=",".$g[$j][0]." ".$g[$j][1]; 
    } 
    $geometry="POLYGON((".$gt."))"; 
    $sql="insert into geo_features 
        (id,geometry,type,name,floormap_id)    
      values('$floormap_id',GeomFromText('$geometry'), 
        '$type','$name','1')"; 
    echo $sql; 
    mysqli_query($conn,$sql) or die("error"); 
} 
echo "success!"; 
?> 

在声明

mysqli_query($conn,"DELETE FROM geo_features") 

您还应该添加一个部分,如:

where id in (...list of ids...) 

,并列出所有的ID(...)。如果您只运行DELETE FROM TABLE,则会删除所有内容。如果您运行的DELETE FROM TABLE WHERE(标准)比您从表中删除的东西只满足特定条件,如id值在列表中。 如果你不能提供ID,比你必须提出规则如何确定这些行。

另外,可以使用UPDATE子句代替DELETE/INSERT。