2011-02-18 58 views
0

我有一個名爲位置內有一個名爲位置表的舊數據庫。複雜的MySQL從舊錶加入到新的

此表有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在Mac上運行Apache MySQL和PHP。這導致了一些麻煩,所以真正可行的唯一解決方案是直接的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

您是否嘗試過的PointFromText功能?

set location = PointFromText(CONCAT('POINT(',latitude,' ',longitude,')')); 
+0

我最終編寫了一個腳本,但是你的代碼很有幫助,即使它需要被編輯並且單獨是不正確的。 –