-3

これを MS SQL SERVER から MySQL に変換するにはどうすればよいですか?

/****** Object: StoredProcedure [dbo].[geolocation_refresh_geography] Script Date: 05/08/2012 22:02:26 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
create procedure [dbo].[geolocation_refresh_geography]
as
update locations
SET geolocation = geography::STPointFromText('POINT(' + CAST([Longitude] AS VARCHAR(20)) + ' ' + CAST([Latitude] AS VARCHAR(20)) + ')', 4326)
where geolocation is null
GO

コードの 4 行目でエラーが発生しています。理由がわかりません。

create procedure geolocation_refresh_geography()
BEGIN
update locations
SET geolocation = geography::STPointFromText('POINT(' + CAST(Longitude AS VARCHAR(20)) + ' ' + CAST(Latitude AS VARCHAR(20)) + ')', 4326)
where geolocation is null
END
4

2 に答える 2

0

MySQL Migration Toolkit を試しましたか?

http://dev.mysql.com/doc/migration-toolkit/en/mysql-migration-toolkit-indepth-sourcedb-mssql.html

最近は見つけるのが少し難しいですが、MySQL Workbench でもこれを達成できると思います。 http://www.mysql.com/products/workbench/

手順を移植する必要があるスキーマ全体を移行することをお勧めします。

于 2012-05-22T15:53:09.610 に答える
0

手始めに、MySQL は空間拡張を有効にして構成されている場合にのみ空間データをサポートします (http://dev.mysql.com/doc/refman/5.0/en/spatial-extensions.html)。その設定ができていると仮定すると、SQL Server 構文を適切な MySQL メソッドに適合させるだけで済みます。

MySQL には、SQL Server の STPointFromText() (http:/ /msdn.microsoft.com/en-us/library/bb933979.aspx)、geography::STPointFromText への参照を PointFromText に置き換えるだけです

ただし、現在行っているように単一の緯度/経度座標ペアからポイントを挿入する場合、使用する最も簡単な方法は Point() (http://dev.mysql.com/doc/refman/5.0/en/creating-spatial- values.html#function_point)、この場合、コードは単純に次のようになります。

create procedure geolocation_refresh_geography()
BEGIN
update locations
SET geolocation = Point(Longitude, Latitude)
where geolocation is null
END
于 2012-05-22T20:41:38.847 に答える