2008-10-02 7 views

ответ

19

SQLite имеет опцию .dump для запуска в командной строке. Хотя я предпочитаю использовать приложение SQLite Database Browser для управления базами данных SQLite. Вы можете экспортировать структуру и содержимое в файл .sql, который можно прочитать практически ни о чем. Файл> Экспорт> База данных в файл SQL.

+1

Экспортированный файл нуждается в некоторой настройке для различий в синтаксисе, но ничего сложного. Спасибо – 2008-10-02 16:09:53

+1

Технически оболочка SQLite не является SQLite, а консольным приложением, связанным с SQLite, который является только библиотекой. – Benoit 2011-01-25 17:04:06

+1

Это указывало на меня в правильном направлении, но я искал синтаксис, поэтому я включу его здесь: `sqlite3 my_db.db -batch" .dump "> my_db.sql` – 2017-04-02 16:59:23

6

Команда SQLite .dump выведет все содержимое базы данных в виде текстового файла ASCII. Этот файл находится в стандартном формате SQL, поэтому его можно импортировать в любую базу данных SQL. Подробнее на этой странице: sqlite3

3

SQLite-менеджер, светлячок надстройки: позволяет экспортировать базу данных SQLite в сценарии SQL.

База данных> Экспорт базы данных> Экспорт в файл

(Коррекция Firefox 35 Bugg обязан исправить код расширения, как указать на следующей веб-странице: How to fix your optional sqlite manager module to work)

Командная строка:

sqlite3 DB_name .dump > DB_name.sql 

экспортирует базу данных sqlite в SQL-скрипт.

От url: http://doc.ubuntu-fr.org/sqlite.

0

Я использую SQLite-менеджер, Firefox дополнение но Fk не работает в SQL-сервере я должен изменить сценарий один на один у меня есть более чем 100 таблицы со многой FK .. это есть новая работа вокруг спасибо

7

Я знаю, что это старая нить, но я думаю, что это решение должно быть также здесь.

  • Установите ODBC драйвер для SQLite
  • Run odbcad32 для x64 или C: \ Windows \ SysWOW64 \ odbcad32.exe для x86
  • Создать SYSTEM DSN, в котором можно выбрать SQLite3 ODBC Driver
  • Затем заполнить до формы, где имя базы данных путь_к_файла в SQLite базы данных

Затем в SQL Server запустить под сисадмином

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 

Затем вы можете запускать свои запросы как обычный пользователь , например.

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

или вы можете использовать что-то наподобие this для больших таблиц.

0

Идея это что-то вроде этого: - Просмотреть squema в sql lite и получить команду CREATE TABLE. - Выполнение, разбор sql, в SQL SERVER - Данные путешествия, создающие запись INSERT для каждой строки. (синтаксический анализ sql тоже)

Этот код является бета-версией, потому что нет данных типа обнаружения и не используется параметр @parameter и командный объект, но выполняется.

(Вам нужно вставить ссылку и установить System.Data.SQLite;)

C#: Вставьте этот код (или neccesari) в голове CS

с использованием системы;

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;

использование 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 
    } 
Смежные вопросы