web-dev-qa-db-fra.com

Exportation de SQLite vers SQL Server

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

23
Geoff Appleford

SQLite a une option .dump à exécuter sur la ligne de commande. Bien que je préfère utiliser l’application SQLite Database Browser 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 vers un fichier SQL.

26
swilliams

La commande SQLite .dump affiche le contenu intégral de la base de données sous forme de fichier texte ASCII. Ce fichier est au format SQL standard, il peut donc être importé dans n’importe quelle base de données SQL . Plus de détails sur cette page: sqlite3

7
Nathan Clark

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

  • Installer le pilote ODBC pour SQLite
  • Exécutez odbcad32 pour x64 ou C:\Windows\SysWOW64\odbcad32.exe pour x86
  • Créez SYSTEM DSN, où vous sélectionnez le pilote SQLite3 ODBC
  • Ensuite, remplissez le formulaire où Nom de la base de données est chemin de fichier vers base de données sqlite.

Ensuite, dans SQL Server, exécutez sous 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

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

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

ou vous pouvez utiliser quelque chose comme this pour les tables plus grandes.

7
Krivers

sqlite-manager, firefox add-on: 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 optionnel sqlite manager au travail )

Ligne de commande :

sqlite3 DB_name .dump > DB_name.sql

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

Depuis l'url: http://doc.ubuntu-fr.org/sqlite .

3
AlbanMar31

Une idée est de faire quelque chose comme ceci: - Voir le squema dans sql lite et obtenir la commande CREATE TABLE. . (analyser 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érez ce code (ou neccesari) dans la tête cs

en utilisant le système;

using System.Collections.Generic;

using System.Text;

using System.Data;

using System.Data.SqlClient;

using System.Data.SQLite;

using System.Threading;

using System.Text.RegularExpressions;

using System.IO;

en utilisant log4net;

using 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
    }
0
R.Alonso