Pregunta

¿Existe una herramienta para migrar una base de datos SQLite a SQL Server (tanto la estructura como los datos)?

¿Fue útil?

Solución

SQLite tiene una opción .dump para ejecutar en la línea de comandos. Aunque prefiero usar la aplicación SQLite Database Browser para administrar las bases de datos SQLite. Puede exportar la estructura y los contenidos a un archivo .sql que se puede leer con casi cualquier cosa. Archivo > Exportar > Base de datos a archivo SQL.

Otros consejos

Sé que este es un tema antiguo, pero creo que esta solución también debería estar aquí.

  • Instale el controlador ODBC para SQLite
  • Ejecute odbcad32 para x64 o C: \ Windows \ SysWOW64 \ odbcad32.exe para x86
  • Cree SYSTEM DSN, donde selecciona el controlador ODBC de SQLite3
  • Luego, rellena el formulario donde el Nombre de la base de datos es filepath a la base de datos sqlite

Luego, en SQL Server, ejecute bajo sysadmin

USE [master]
GO
EXEC sp_addlinkedserver 
   @server     = 'OldSQLite', -- connection name
   @srvproduct = '',          -- Can be blank but not NULL
   @provider   = 'MSDASQL', 
   @datasrc    = 'SQLiteDNSName' -- name of the system DSN connection 
GO

Luego puede ejecutar sus consultas como usuario normal por ejemplo

SELECT * INTO SQLServerDATA FROM openquery(SQLiteDNSName, 'select * from SQLiteData')

o puede usar algo como esto para tablas más grandes.

El comando SQLite .dump generará todo el contenido de la base de datos como un archivo de texto ASCII. Este archivo está en formato SQL estándar, por lo que se puede importar a cualquier base de datos SQL. Más detalles en esta página: sqlite3

sqlite-manager , complemento de firefox: le permite exportar una base de datos SQLite en un script SQL.

Base de datos > Exportar base de datos > Exportar a archivo

(Corrección de Firefox 35 bugg obligado a corregir el código de extensión como se indica en la siguiente página web: Cómo arreglar su módulo de administrador de sqlite opcional para que funcione )

Línea de comando :

sqlite3 DB_name .dump > DB_name.sql

exporta la base de datos sqlite en un script SQL.

De url: http: //doc.ubuntu- fr.org/sqlite .

Una idea es hacer algo como esto: - Ver squema en sql lite y obtener el comando CREATE TABLE. - Ejecutar, parsing sql, en SQL SERVER - Datos de viaje creando una declaración INSERT para cada fila. (parsing sql también)

Este código es beta, porque no se detectan datos de tipo y no se usa @parameter y comando de objeto, pero se ejecuta.

(Necesita insertar referencia e instalar System.Data.SQLite;)

c #: Inserte este código (o neccesari) en head cs

utilizando el sistema;

utilizando System.Collections.Generic;

utilizando System.Text;

utilizando System.Data;

utilizando System.Data.SqlClient;

utilizando System.Data.SQLite;

utilizando System.Threading;

utilizando System.Text.RegularExpressions;

utilizando System.IO;

utilizando log4net;

utilizando System.Net;

    public static Boolean SqLite2SqlServer(string sqlitePath, string connStringSqlServer)
    {
        String SqlInsert;
        int i;
        try
        {

            string sql = "select * from sqlite_master where type = 'table' and name like 'YouTable in SQL'";
            string password = null;
            string sql2run;
            string tabla;
            string sqliteConnString = CreateSQLiteConnectionString(sqlitePath, password);
            //sqliteConnString = "data source=C:\\pro\\testconverter\\Origen\\FACTUNETWEB.DB;page size=4096;useutf16encoding=True";

            using (SQLiteConnection sqconn = new SQLiteConnection(sqliteConnString))
            {



                sqconn.Open();

                SQLiteCommand command = new SQLiteCommand(sql, sqconn);
                SQLiteDataReader reader = command.ExecuteReader();

                SqlConnection conn = new SqlConnection(connStringSqlServer);
                conn.Open();
                while (reader.Read())
                {
                    //Console.WriteLine("Name: " + reader["name"] + "\tScore: " + reader["score"]);
                    sql2run = "" + reader["sql"];
                    tabla = "" + reader["name"];

                    /*
                    sql2run = "Drop table " + tabla;
                    SqlCommand cmd = new SqlCommand(sql2run, conn);                       
                    cmd.ExecuteNonQuery();
                    */



                    sql2run = sql2run.Replace("COLLATE NOCASE", "");
                    sql2run = sql2run.Replace(" NUM", " TEXT");
                    SqlCommand cmd2 = new SqlCommand(sql2run, conn);
                    cmd2.ExecuteNonQuery();


                    // insertar los datos.
                    string sqlCmd = "Select *  From " + tabla;
                    SQLiteCommand cmd = new SQLiteCommand(sqlCmd, sqconn);
                    SQLiteDataReader rs = cmd.ExecuteReader();
                    String valor = "";
                    String Valores = "";
                    String Campos = "";
                    String Campo = "";
                    while (rs.Read())
                    {
                        SqlInsert = "INSERT INTO " + tabla;
                        Campos = "";
                        Valores = "";
                        for ( i = 0; i < rs.FieldCount ; i++)
                        {

                            //valor = "" + rs.GetString(i);
                            //valor = "" + rs.GetName(i);
                            Campo = "" + rs.GetName(i);
                            valor = "" + rs.GetValue(i);

                            if (Valores != "")
                            {
                                Valores = Valores + ',';
                                Campos = Campos + ',';
                            }
                            Valores = Valores + "'" + valor + "'";
                            Campos = Campos + Campo;
                        }
                        SqlInsert = SqlInsert + "(" + Campos + ") Values (" + Valores + ")";
                        SqlCommand cmdInsert = new SqlCommand(SqlInsert, conn);
                        cmdInsert.ExecuteNonQuery();


                    }


                }

                }
            return true;
        } //END TRY
        catch (Exception ex)
        {
            _log.Error("unexpected exception", ex);

            throw;

        } // catch
    }

Para Android.

adb root
adb shell
cd /data/com.xxx.package/databases/
sqlite3 db_name .dump >dump.sql
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top