2008-10-02 29 views

Respuesta

19

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

+1

El archivo exportado necesita algunas modificaciones para las diferencias de sintaxis, pero nada demasiado complejo. Gracias –

+1

Técnicamente, el shell SQLite no es SQLite, sino una aplicación de consola vinculada a SQLite que solo es una biblioteca. – Benoit

+1

Esto me apuntó en la dirección correcta, pero estaba buscando la sintaxis, por lo que la incluiré aquí: 'sqlite3 my_db.db -batch" .dump "> my_db.sql' –

6

El comando SQLite .dump mostrará todos los contenidos 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 sobre esta página: sqlite3

3

sqlite-manager, Complemento de Firefox: permite exportar una base de datos SQLite en una secuencia de comandos SQL.

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

(corrección de Firefox 35 Bugg obligados a corregir el código de extensión como se indica en la siguiente página Web: How to fix your optional sqlite manager module to work)

línea de comandos:

sqlite3 DB_name .dump > DB_name.sql 

exporta la base de datos sqlite en un script SQL.

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

+0

excelente respuesta @ AlbanMar31. Está funcionando bien. –

+0

el complemento parece estar muerto ahora, Firefox versión 57.0 lo muestra como incompatible e inutilizable ... –

0

uso el sqlite-gerente, Complemento de Firefox pero el Fk no está funcionando en el servidor SQL que tengo que modificar la secuencia de comandos uno por uno tengo más de 100 mesa con muchos FK .. no es una nuevo trabajo alrededor de gracias

7

Sé que esto es viejo hilo, pero creo que esta solución también debería estar aquí.

  • Instalar controlador ODBC para SQLite
  • Run odbcad32 para x64 o C: \ Windows \ SysWOW64 \ odbcad32.exe para x86
  • Crear DSN de sistema, donde se selecciona el controlador ODBC SQLite3
  • Luego de llenar encima de la forma en que la base de datos Nombre es ruta de archivo de base de datos SQLite

a continuación, en SQL Server se ejecute en administrador de sistemas

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 p. Ej.

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

o se puede usar algo como this para tablas grandes.

+0

SELECCIONAR * EN SQLServerDATA FROM openquery (OldSQLite, 'select * from SQLiteData') ---------- --------- Y puede instalar el controlador para 64 bits y crear un ODBC para 64 bits (odbcad32 en la carpeta del sistema 32 - Controlador ODBC SQLite3) –

0

Una idea es hacer algo como esto: - Ver squema en sql lite y obtener el comando CREATE TABLE. - Ejecutar, analizar sql, en SQL SERVER - Datos de viaje que crean una sentencia INSERT para cada fila. (sql de análisis también)

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

(Es necesario insertar referencia e instalar System.Data.SQLite;)

C#: Inserta este código (o neccesari) en la cabeza cs

using System;

usando System.Collections.Generic;

usando System.Text;

usando System.Data;

usando System.Data.SqlClient;

usando System.Data.SQLite;

usando System.Threading;

utilizando System.Text.RegularExpressions;

usando System.IO;

usando log4net;

usando 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 
    } 
Cuestiones relacionadas