Tengo que reconocer que este articulo es un poco “off topic” pero creo que será de utilidad para aquellos que en algún momento nos veamos en la situación de migrar una base de datos SDF a MySQL y no perder la cabeza en el proceso. Las base de datos SDF o SQL Compact Microsoft SQL Server Compact (SQL Server CE) es un motor de base de datos relacional, de libre descarga y distribución, tanto para dispositivos móviles como para aplicaciones escritorio desarrollado allá por 2001 y que todavía es común encontrar en proyectos web basados en servidores MS/Windows. Pero claro, ahora la mayoría de proyectos corren sobre servidores GNU/Linux y la migración puede ser un poco complicada.
En mi caso hoy me ha tocado lidiar con una vieja web y en en proceso había que convertir la base de datos de un tipo a otro. La solución en mi caso fue usar un servicio en línea usando la API que ofrece Rebase Data de manera gratuita y compatible con SQL Server Compact Edition 3.5 y 4.0.
Ya sé que habrá quien diga que esto es mejor no hacerlo por razones de seguridad pero para pequeños proyectos, en este caso una web de recetas de cocina y noticias gastronómicas donde solo interesaban los artículos publicados esta solución es más que suficiente.
¿Qué tenemos que hacer?
Rebase Data nos ofrece dos opciones. La primera es usando nuestro terminal para llamar a la API y obtener un fichero .zip que contiene nuestra base de datos en formato SQL. Para ello debemos instalar primero curl si no lo tenemos (apt install curl):
curl -F files[]=@database.sdf 'https://www.rebasedata.com/api/v1/convert?outputFormat=mysql&errorResponse=zip' -o output.zip
Donde database.sdf es la ruta a nuestro fichero a convertir y output.zip es el nombre del fichero que recibiremos con el resultado. Fácil ¿verdad?
La otra opción es acceder a su web y utilizar su asistente. Eso nos devolverá un fichero .zip que contendrá nuestra base de datos en diferentes ficheros .csv (uno por cada tabla de nuestra base de datos) que luego podremos importar sin problema usando por ejemplo PhpMyAdmin, el terminal o lo queramos.