将几何特征更改为现有数据库
问题描述:
我正在使用脚本将几何特征导入数据库。我将花费下面的脚本。如果导入所有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。