我有一个名为locations的旧数据库,其中一个表位于命名位置。
此表有7个变量:id(int,index),approved(int),city(text),country(text),heading(double),lat(double),lng(double)。
我有一个名为复杂性的新数据库。 该数据库有一个名为gsvraw
的新表我需要将旧表复制到新表中,但这是一个棘手的问题:
新数据库将使用MySQL的空间索引,以便稍后我可以在多边形内搜索。在新数据库中,我想添加一个名为location的新列,而不是lat,lng。
创建新列的示例语句:
ALTER TABLE gsvraw ADD location POINT NOT NULL;
CREATE SPATIAL INDEX location ON gsvraw (location);
这是一个将新值插入位置列的示例语句:
INSERT INTO gsvraw (location) VALUES( GeomFromText( 'POINT(40 -100)' ));
40和-100将是lat和lng。
有什么想法吗?
我在麻省理工学院的三个不同的“大师”中浪费了一个小时,而且几乎无处可去。
我正在运行的服务器导致严重问题,因此使用python和MySQLdb已经完成了。
希望有人比我们聪明,可以帮助处理原始的sql语句。
我在使用MAMP pro的Apache MySQL和PHP的Mac上运行它。这会导致一些麻烦,所以唯一可行的解决方案是直接的php和sql。 有什么想法吗?
解决方案:
<?php
$con = mysql_pconnect("localhost","username","password");
if (!$con)
{
die('Could not connect: ' . mysql_error());
}
mysql_select_db("database1", $con);
$result = mysql_query("SELECT * FROM database1 WHERE ")
or die(mysql_error());
$con2 = mysql_pconnect("localhost","username","password");
if (!$con2)
{
die('Could not connect: ' . mysql_error());
}
mysql_select_db("complexity", $con2);
while($row = mysql_fetch_array( $result )) {
mysql_query("INSERT INTO table1 (id, approved, city, country, heading, location) VALUES ('".$row['id']."', '".$row['approved']."', '".$row['city']."', '".$row['country']."', '".$row['heading']."', PointFromText('POINT(".$row['lng']." ".$row['lat'].")'))", $con2);
}
?>
答案 0 :(得分:0)
您是否尝试过PointFromText函数?
set location = PointFromText(CONCAT('POINT(',latitude,' ',longitude,')'));