martes, 5 de noviembre de 2013

Creando un Servidor Vinculado de SQL Server a SQLite para Importar Datos

Problema

En la actualidad utilizamos y desarrollamos un sinnúmero de aplicaciones basadas en tecnologías móviles y el motor de base de datos por excelencia para este tipo de aplicaciones es SQLite, líder indiscutible en este segmento de tecnológico. En ocasiones nos veremos obligados a importar datos desde SQLite hacia SQL Server, y este artículo tiene como finalidad mostrar una guía paso a paso de cómo realizar esta tarea que ha cobrado tanta importancia en estos momentos donde el auge de las aplicaciones para dispositivos móviles crece a un ritmo muy acelerado.

Solución

Existen varias formas alternativas de como importar los datos desde SQLite hacia SQL Server, nosotros como solución implementaremos un Linked Server hacia SQLite.

Dividiremos esta solución en los siguientes pasos:

  1. Descargar un controlador ODBC para SQLite
  2. Instalar el controlador
  3. Crear un DSN a nivel de sistema para la base de datos en SQLite
  4. Crear el Linked Server en SQL Server
  5. Seleccionar los datos de la fuente e insertarlos en nuestra tabla en SQL Server

  1. Descargar un controlador ODBC para SQLite
  2. Ir a esta página donde se encuentra el controlador ODBC para SQLite. Configurar el controlador correcto es algunas veces la parte más difícil, por lo que recomendamos descargar ambos controladores tanto el de 32 como el de 64 bits.

  3. Instalar el controlador
  4. Elija el controlador que le corresponda dependiendo de si su sistema operativo es de 32 o 64 bits y ejecute el archivo ejecutable (.exe) correspondiente.















  5. Crear un DSN a nivel de sistema para la base de datos en SQLite

  6. Presione Inicio -> Ejecutar y luego digite odbcad32 y presione retorno (enter) para el administrador odbc de 64 bits.


    Presione Inicio -> Ejecutar y luego digite C:\Windows\SysWOW64\odbcad32.exe y presione retorno (enter) para el administrador odbc de 32 bits.


    Haga click en la pestaña DSN de Sistema (System DSN).


    Haga click en agregar (add).

    Seleccione el controlador apropiado.


    Enter your SQLite database path. Note that some of the options are documented at the driver site. I suggest leaving them as they are initially. Introduzca la ruta a su base de datos de SQLite. Note que las opciones estan documentadas en sitio web del controlador.


    Notice the 32 bit driver is only editable from a 32 bit administrator and the 64 bit driver is only editable from the 64 bit administrator. Note que el controlador de 32 bits solo es editable desde el administrador de 32 bit, así como el controlador de 64 bits solo es editable desde el administrador de 64 bits.


    Note que los botones remover (remove) y configurar (configure) estan deshabilitados.


  7. Crear el Linked Server en SQL Server

  8. A continuación mostramos el código T-SQL para crear el Linked Server a nuestra base de datos SQLite. Este tipo de Linked Server no necesita cuenta de acceso (Login) ni tampoco ningún contexto de seguridad.

    USE [master]
    GO
    EXEC sp_addlinkedserver
      
    @server = 'Mobile_Phone_DB_64', -- Nombre con el que identificaras el Link Server en SSMS
      
    @srvproduct = '', -- Puede estar en blanco pero no puede ser NULL
      
    @provider = 'MSDASQL',
      
    @datasrc = 'Mobile_Phone_DB_64' -- El nombre de la conexión DSN de Sistema
    GO

  9. Seleccionar los datos de la fuente e insertarlos en nuestra tabla en SQL Server

  10. Ahora haga click sobre el Linked Server y navegue hasta encontrar las tablas, luego simplemente ejecute sus consultas sobre las tablas.

    SELECT *
    FROM OPENQUERY(Mobile_Phone_DB_64 , 'select * from db_notes')
    GO


    Ahora usted puede utilizar una consulta con la clausula INTO para crear tablas con los datos que usted requiera en SQL Server.

    SELECT * INTO SQLite_Data -- Esto crea una tabla nueva con los datos seleccionados
    FROM OPENQUERY(Mobile_Phone_DB_64 , 'select * from db_notes')
    GO


    Luego verifique los tipos de datos en su tabla destino en SQL Server y cambie por los tipos correspondientes.

Referencias