2008-10-02 29 views

Antwort

19

SQLite verfügt über eine .dump-Option, die in der Befehlszeile ausgeführt wird. Obwohl ich lieber die SQLite Database Browser Anwendung für die Verwaltung von SQLite-Datenbanken verwenden. Sie können die Struktur und den Inhalt in eine .sql-Datei exportieren, die von fast allem gelesen werden kann. Datei> Exportieren> Datenbank in SQL-Datei.

+1

Die exportierte Datei braucht einige Optimierungen für Unterschiede in der Syntax, aber nichts zu komplex. Danke –

+1

Technisch gesehen ist die SQLite-Shell keine SQLite, sondern eine mit SQLite verbundene Konsolenanwendung, die nur eine Bibliothek ist. – Benoit

+1

Dies zeigte mir in die richtige Richtung, aber ich suchte nach der Syntax, also werde ich es hier einschließen: 'sqlite3 my_db.db -batch" .dump "> my_db.sql' –

6

Der Befehl SQLite .dump gibt den gesamten Inhalt der Datenbank als ASCII-Textdatei aus. Diese Datei befindet sich im Standard-SQL-Format, sodass sie in jede SQL-Datenbank importiert werden kann. Weitere Details zu dieser Seite: sqlite3

3

SQLite-Manager, Firefox-Add-on: Damit können Sie eine SQLite-Datenbank in einer SQL-Skript exportieren.

Datenbank> Datenbank exportieren> Export

(Korrektur firefox 35 bugg verpflichtet, den Erweiterungscode zu korrigieren, wie auf der folgenden Webseite zeigen: How to fix your optional sqlite manager module to work) Datei

Befehlszeile:

sqlite3 DB_name .dump > DB_name.sql 

exportiert die SQLite-Datenbank in einem SQL-Skript.

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

+0

ausgezeichnete Antwort @ AlbanMar31. Es funktioniert gut. –

+0

das Add-On scheint jetzt tot zu sein, Firefox-Version 57.0 zeigt es als inkompatibel und unbrauchbar ... –

0

Ich benutze die SQLite-Manager Firefox-Add-on aber die Fk funktioniert nicht in SQL Server muss ich durch das Skript eine modifizieren ein Ich habe mehr als 100 Tabelle mit vielen FK .. gibt es eine neue Arbeit um danke

7

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

  • Installieren Sie ODBC-Treiber für SQLite
  • Run odbcad32 für x64 oder C: \ Windows \ SysWOW64 \ odbcad32.exe für x86
  • SYSTEM DSN erstellen, in dem Sie SQLite3 ODBC-Treiber
  • Dann wählen Sie füllen Formular, wo Datenbank-Name Dateipfad zu sQLite-Datenbank ist

dann in SQL Server unter sysadmin laufen

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 z.

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

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

+0

SELECT * INTO SQLServerDATA FROM openquery (OldSQLite, 'Select * von SQLiteData') ---------- --------- Und Sie können Treiber für 64 Bit installieren und ein ODBC für 64 Bit erstellen (odbcad32 in System32-Ordner - SQLite3 ODBC-Treiber) –

0

Eine Idee ist, eine Sache so zu machen: - Sehen Sie squema in sql lite und erhalten Sie den Befehl CREATE TABLE. - Ausführen, Analysieren von SQL, in SQL SERVER - Reisedaten Erstellen einer INSERT-Anweisung für jede Zeile. (Parsing sql auch)

Dieser Code ist Beta, weil keine Art Daten erkennen, und keine Verwendung von @ Parameter und Befehlsobjekt, aber ausführen.

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

C#: Fügen Sie diesen Code (oder neccesari) in Kopf cs

using System;

mit System.Collections.Generic;

mit System.Text;

mit System.Data;

mit System.Data.SqlClient;

mit System.Data.SQLite;

mit System.Threading;

mit System.Text.RegularExpressions;

mit System.IO;

mit log4net;

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