0

私はlocationsという名前の古いデータベースを持っており、その中にテーブルがあります。

このテーブルには、id(int、index)、authorized(int)、city(text)、country(text)、heading(double)、lat(double)、lng(double)の7つの変数があります。

複雑さという名前の新しいデータベースがあります。そのデータベースには、gsvrawという名前の新しいテーブルがあります

古いテーブルを新しいテーブルにコピーする必要がありますが、ここで注意が必要です。

新しいデータベースでは、後でポリゴン内を検索できるように、MySQLの空間インデックスを使用します。新しいデータベースで、lat、lngの代わりに、locationという名前の新しい列を追加したいと思います。

新しい列を作成するためのステートメントの例:

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になります。

何か案は?

私はここMITで3つの異なる「教祖」のそれぞれを1時間無駄にし、文字通りどこにも行きませんでした。

私が実行しているサーバーは大きな問題を引き起こしているので、pythonとMySQLdbの使用は終了しています。

うまくいけば、そこにいる誰かが私たちより賢く、生のSQLステートメントを手伝ってくれるでしょう。

私はこれをMAMPproを使用してApacheMySQLと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);

} 
?>
4

1 に答える 1

0

PointFromText関数を試しましたか?

set location = PointFromText(CONCAT('POINT(',latitude,' ',longitude,')'));
于 2011-02-18T01:49:17.250 に答える