Question

Existe-t-il un outil permettant de migrer une base de données SQLite vers SQL Server (la structure et les données)?

Était-ce utile?

La solution

SQLite dispose d'une option .dump à exécuter sur la ligne de commande. Bien que je préfère utiliser l’application Navigateur de base de données SQLite pour gérer les bases de données SQLite. Vous pouvez exporter la structure et le contenu dans un fichier .sql lisible par à peu près n'importe quoi. Fichier > Exporter > Base de données en fichier SQL.

Autres conseils

Je sais que c'est du vieux fil, mais je pense que cette solution devrait également figurer ici.

  • Installer le pilote ODBC pour SQLite
  • Exécuter odbcad32 pour x64 ou C: \ Windows \ SysWOW64 \ odbcad32.exe pour x86
  • Créer SYSTEM DSN, où vous sélectionnez le pilote ODBC SQLite3
  • Vous remplissez ensuite le formulaire où Nom de la base de données correspond au chemin de fichier de la base de données sqlite

Puis, dans SQL Server, sysadmin est exécuté

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

Ensuite, vous pouvez exécuter vos requêtes en tant qu'utilisateur normal par exemple

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

ou vous pouvez utiliser quelque chose comme this pour des tables plus volumineuses.

La commande SQLite .dump permet d'afficher l'intégralité du contenu de la base de données sous forme de fichier texte ASCII. Ce fichier est au format SQL standard et peut donc être importé dans n’importe quelle base de données SQL. Plus de détails sur cette page: sqlite3

sqlite-manager , add-on firefox: permet d’exporter une base de données SQLite dans un script SQL.

Base de données > Exporter la base de données > Exporter vers un fichier

(Correction firefox 35 bugg obligé de corriger le code d'extension comme indiqué sur la page web suivante: Comment réparer votre module de gestionnaire de sqlite facultatif au travail )

Ligne de commande :

sqlite3 DB_name .dump > DB_name.sql

exporte la base de données sqlite dans un script SQL.

De l'URL: http: //doc.ubuntu- fr.org/sqlite .

Une idée est de faire quelque chose comme ça: - Affichez squema dans sql lite et obtenez la commande CREATE TABLE. - Exécuter, en analysant SQL, dans SQL SERVER - Données de voyage créant une déclaration INSERT pour chaque ligne. (analyse de SQL aussi)

Ce code est bêta, car aucune donnée de type de détection et aucune utilisation de paramètre @parameter et de commande ne sont exécutées.

(Vous devez insérer une référence et installer System.Data.SQLite;)

c #: Insérer ce code (ou neccesari) dans la tête cs

utilisant System;

using System.Collections.Generic;

utilisant System.Text;

using System.Data;

using System.Data.SqlClient;

using System.Data.SQLite;

utilisant System.Threading;

using System.Text.RegularExpressions;

utilisant System.IO;

utilisant log4net;

utilisant 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
    }

Pour Android.

adb root
adb shell
cd /data/com.xxx.package/databases/
sqlite3 db_name .dump >dump.sql
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top