2012-05-22 3 views
-3

어떻게 이것을 MS SQL SERVER에서 MySQL로 변환 할 수 있습니까?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 
+0

저는 블록 2가 MySQL 코드라고 가정하고 있습니다. 그렇다면 mysql에 지리 비트가 없기 때문에 실패하는 이유가 있습니다. STPointFromText는 사용자가 수동으로해야 할 일입니다. 대부분 외부에서 코드화해야합니다. –

+0

왜 수동 또는 외부 적으로 지구를해야합니까? MySQL은 SQL Server와 거의 동일한 OGC 표준을 지원합니다. 단지 구문이 약간 다릅니다. http://dev.mysql.com/doc/refman/5.0/en/gis-introduction.html –

답변

0

MySQL 마이그레이션 도구 키트를 사용해 보셨습니까?

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

이이 일을 찾기 어려운 약간은하지만 난 당신이 또한 MySQL의 워크 벤치는 이러한 목표를 달성하기 위해 할 수있는 생각합니다.

프로 시저를 이식해야하는 전체 스키마를 마이그레이션하는 것이 좋습니다.

+0

동료로부터 코드를 빌려서 물리적 DB에 액세스 할 필요가 없습니다. MySQL Workbench. – swagger937

+0

이것을 무시하지만 StackOverflow로 전환하기 전에 백그라운드 조사를 수행 할 때 내 질문에 경련을 일으키는 사람은 누구입니까? – swagger937

+0

이 솔루션에 대한 약속은 없지만 SQL Server 복사본이있는 경우이 절차를 사용하여 항상 간단한 스키마를 만들고 마이그레이션을 시도 할 수 있습니다. 나는 정말로 지리학적인 것들이 당신의 벽돌 벽이 될지 모른다는 것을 두려워합니다. –

0

MySQL은 Spatial Extensions가 활성화 된 경우에만 공간 데이터를 지원합니다 (http://dev.mysql.com/doc/refman/5.0/en/spatial-extensions.html). 설정을했다고 가정하면 SQL Server 구문을 적절한 MySQL 메소드에 적용하면됩니다.

MySQL은) (SQL 서버의 STPointFromText의 동작을 미러링하는 PointFromText() 메서드 (http://dev.mysql.com/doc/refman/5.0/en/creating-spatial-values.html#function_pointfromtext)이있다 (http://msdn.microsoft.com/en-us/library/bb933979.aspx), 당신은 단순히 지리에 대한 참조를 대체 할 수 있도록 :: STPointFromTextPointFromText으로

그러나,에서 포인트를 삽입 하나의 위도/경도 좌표 쌍을 사용하는 가장 쉬운 방법은 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 
관련 문제