Migración de datos – SQL Server

En la migración de sistemas, una parte fundamental es el traslado de datos desde los sistemas anteriores. Además de ser siempre un quebradero de cabeza los cambios de formato y las transformaciones de datos, la carga inicial de las estructuras de la aplicación es un paso que se debe planificar con especial meticulosidad.

Existen múltiples métodos de realizar esta tarea, pero me voy a centrar en los más sencillos y rápidos:

  • La copia directa o INSERT-SELECT
  • La exportación e importación de datos.

Si nos encontramos en la situación de que ambas bases de datos están en el mismo servidor, el método más directo es la realización de un volcado directo de una consulta sobre una tabla. Un ejemplo de INSERT-SELECT sería el siguiente:

INSERT  bd_destino.propietario_destino.nombre_de_tabla1 ( campo1, campo2 )
SELECT campo3, campo4 FROM bd_origen.propietario_origen.nombre_de_tabla2

Teniendo en cuenta que:

  • bd_destino es el nombre de la base de datos donde se realizará la inserción
  • propietario_destino es el identificador del propietario de la base de datos (por ejemplo dbo)
  • nombre_de_tabla1 es la tabla donde se realizará la inserción
  • campo1, campo2… es el nombre de los campos de la tabla en la que se insertarán los datos
  • campo3, campo4… es el nombre de los campos de la tabla origen.
  • bd_origen es el nombre de la base de datos de la que proceden los datos
  • propietario_origen es el identificador del propietario de la base de datos que se consulta
  • nombre_de_tabla2 es la tabla de la que proceden los datos.

En el caso de que las bases de datos no se encuentren en el mismo servidor, siempre se puede optar por enlazar ambos servidores mediante linked server y utilizar esta técnica.

Si no hay posibilidad real de interconectar ambos servidores de base de datos (desconexión física, por permisos… etc) Siempre podemos realizar la exportación de datos y su importación en el servidor de destino.


En base a los resultados de una consulta de la base de datos de origen, exportamos dichos resultados en un fichero físico, pulsando con el botón secundario y seleccionando la opción «Guardar resultados como…»

En este caso hemos optado por realizar la exportación en un fichero csv.

Una vez copiado el fichero en el servidor de destino, la importación de los datos a la estructra destino se realiza con la siguiente instrucción:

BULK
INSERT nombre_de_la_tabla
FROM 'Z:\ruta\fichero.csv'
WITH
(
FIELDTERMINATOR = ';',
ROWTERMINATOR = '\n'
)

Teniendo en cuenta que  nombre_de_la_tabla es la tabla donde se insertarán los datos y Z:\ruta\fichero.csv es la ruta completa donde se encuentra el fichero a importar.