Cambiar el código de MS SQL Server a MySQL
Frecuentes
Visto 337 veces
-3
¿Cómo puedo convertir esto de MS SQL SERVER a 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
Mi código está causando errores en la línea 4, ¿no estoy seguro de por qué?
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
2 Respuestas
0
¿Has probado el kit de herramientas de migración de MySQL?
http://dev.mysql.com/doc/migration-toolkit/en/mysql-migration-toolkit-indepth-sourcedb-mssql.html
Es un poco difícil de encontrar en estos días, pero creo que también puede usar MySQL Workbench para lograr esto. http://www.mysql.com/products/workbench/
Recomendaría simplemente migrar todo su esquema, lo que debería portar el procedimiento por usted.
contestado el 22 de mayo de 12 a las 16:05
Estoy tomando prestado el código de un compañero de trabajo, por lo que no tengo acceso a la base de datos física para convertirlo en MySQL Workbench. - arrogancia937
ignore esto, pero ¿quiénes son los idiotas que respondieron mis preguntas cuando realicé una investigación de antecedentes antes de recurrir a StackOverflow? - arrogancia937
No hay promesas de que esto sea una solución, pero si tiene una copia del servidor SQL a mano, siempre puede crear un esquema realmente simple con este procedimiento e intentar migrarlo. Sin embargo, tengo mucho miedo de que las cosas de la geografía vayan a ser tu pared de ladrillos. - amstrong
0
Para empezar, MySQL admite datos espaciales solo si está configurado con extensiones espaciales habilitadas (http://dev.mysql.com/doc/refman/5.0/en/spatial-extensions.html). Suponiendo que tenga esa configuración, solo necesita adaptar la sintaxis de SQL Server al método MySQL apropiado.
MySQL tiene un método PointFromText() (http://dev.mysql.com/doc/refman/5.0/en/creating-spatial-values.html#function_pointfromtext) que refleja el comportamiento de STPointFromText() de SQL Server (http:/ /msdn.microsoft.com/en-us/library/bb933979.aspx), por lo que simplemente podría reemplazar la referencia a geografía::STPointFromText con PuntoDesdeTexto
Sin embargo, para insertar puntos de un solo par de coordenadas de latitud/longitud como lo está haciendo, el método más fácil de usar es Point() (http://dev.mysql.com/doc/refman/5.0/en/creating-spatial- valores.html#function_point), en cuyo caso su código simplemente se convierte en:
create procedure geolocation_refresh_geography()
BEGIN
update locations
SET geolocation = Point(Longitude, Latitude)
where geolocation is null
END
contestado el 22 de mayo de 12 a las 21:05
No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas mysql sql-server or haz tu propia pregunta.
Supongo que el bloque dos es su código MySQL, si es así, la razón por la que falla es porque mysql no tiene el bit de geografía. El STPointFromText es algo que tendrá que hacer manualmente. Lo más probable es que esto tenga que codificarse externamente. - Dan Armstrong
¿Por qué diablos tiene que hacerse manualmente o externamente? MySQL admite casi exactamente los mismos estándares OGC que SQL Server, solo que la sintaxis es ligeramente diferente. dev.mysql.com/doc/refman/5.0/en/gis-introduction.html - Alastair Aitchison