it-swarm.com.de

Export von SQLite nach SQL Server

Gibt es ein Werkzeug zum Migrieren einer SQLite Datenbank zu SQL Server (sowohl der Struktur als auch der Daten)?

23
Geoff Appleford

SQLite hat eine Dump-Option, die in der Befehlszeile ausgeführt werden kann. Ich bevorzuge jedoch die Verwendung der Anwendung SQLite Database Browser zur Verwaltung von SQLite-Datenbanken. Sie können die Struktur und den Inhalt in eine .sql-Datei exportieren, die von nahezu allen Objekten gelesen werden kann. Datei> Exportieren> Datenbank in SQL-Datei.

26
swilliams

Der SQLite-Befehl .dump gibt den gesamten Inhalt der Datenbank als Textdatei ASCII aus. Diese Datei hat ein Standard-SQL-Format und kann daher in jede SQL-Datenbank importiert werden. Weitere Details auf dieser Seite: sqlite3

7
Nathan Clark

Ich weiß, dass dies ein alter Thread ist, aber ich denke, dass diese Lösung auch hier sein sollte.

  • Installieren Sie den Treiber ODBC für SQLite
  • Führen Sie odbcad32 für x64 oder C:\Windows\SysWOW64\odbcad32.exe für x86 aus
  • Erstellen Sie SYSTEM DSN, und wählen Sie SQLite3 ODBC Driver aus
  • Dann füllen Sie das Formular aus, in dem Database Name der Dateipfad zur SQLite-Datenbank ist

Dann in SQL Server unter sysadmin ausführen

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

Dann können Sie Ihre Abfragen als normaler Benutzer Ausführen, z.

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

oder Sie können etwas wie this für größere Tabellen verwenden.

7
Krivers

sqlite-manager , firefox add-on: Ermöglicht das Exportieren einer SQLite-Datenbank in ein SQL-Skript.

Datenbank> Datenbank exportieren> In Datei exportieren

(Korrektur Firefox 35 Bugg verpflichtet, den Erweiterungscode gemäß der folgenden Webseite zu korrigieren: So reparieren Sie Ihr optionales SQLite-Manager-Modul )

Befehlszeile :

sqlite3 DB_name .dump > DB_name.sql

exportiert die sqlite-Datenbank in ein SQL-Skript. 

Über URL: http://doc.ubuntu-fr.org/sqlite .

3
AlbanMar31

Für Android.

adb root
adb Shell
cd /data/com.xxx.package/databases/
sqlite3 db_name .dump >dump.sql
0
caopeng

Eine Idee ist etwas wie das Folgende: - Zeigen Sie das Squema in sql lite an, und rufen Sie den Befehl CREATE TABLE auf. - Ausführen, SQL-Analyse in SQL SERVER - Erstellen von Reisedaten eine INSERT-Anweisung für jede Zeile. (SQL auch parsen)

Dieser Code ist Beta, da keine Typdaten erkannt werden und @parameter und Befehlsobjekte nicht verwendet, aber ausgeführt werden.

(Sie müssen Referenz einfügen und System.Data.SQLite installieren;)

c #: Fügen Sie diesen Code (oder neccesari) in head cs ein

mit System;

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;

mit log4net;

unter Verwendung von 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