2008-10-02 17 views

उत्तर

19

SQLite में कमांड लाइन पर चलाने के लिए .dump विकल्प है। हालांकि मैं SQLite डेटाबेस प्रबंधित करने के लिए SQLite Database Browser एप्लिकेशन का उपयोग करना पसंद करता हूं। आप संरचना और सामग्रियों को एक .sql फ़ाइल में निर्यात कर सकते हैं जिसे किसी भी चीज़ के द्वारा पढ़ा जा सकता है। फ़ाइल> निर्यात> डेटाबेस को SQL फ़ाइल में।

+1

निर्यात की गई फ़ाइल को वाक्यविन्यास में विविधता के लिए कुछ tweaking की आवश्यकता है लेकिन कुछ भी जटिल नहीं है। धन्यवाद –

+1

तकनीकी रूप से, SQLite खोल SQLite नहीं है लेकिन SQLite से जुड़ा एक कंसोल एप्लिकेशन जो केवल एक लाइब्रेरी है। – Benoit

+1

यह मुझे सही दिशा में इंगित करता था, लेकिन मैं वाक्यविन्यास की तलाश में था, इसलिए मैं इसे यहां शामिल करूंगा: 'sqlite3 my_db.db -batch ".dump"> my_db.sql' –

6

SQLite .dump कमांड डेटाबेस की संपूर्ण सामग्री को ASCII टेक्स्ट फ़ाइल के रूप में आउटपुट करेगा। यह फ़ाइल मानक SQL प्रारूप में है, इसलिए इसे किसी भी SQL डेटाबेस में आयात किया जा सकता है। इस पृष्ठ पर अधिक विवरण: sqlite3

3

SQLite प्रबंधक, फ़ायरफ़ॉक्स ऐड-ऑन: यदि आप एक SQL स्क्रिप्ट में एक SQLite डेटाबेस का निर्यात करने की अनुमति देता है।

डाटा बेस> निर्यात डाटाबेस फाइल करने के लिए> निर्यात

(सुधार फ़ायरफ़ॉक्स 35 bugg के रूप में निम्नलिखित वेब पेज के लिए संकेत मिलता है विस्तार कोड को दूर करने के लिए बाध्य: How to fix your optional sqlite manager module to work)

कमांड लाइन:

sqlite3 DB_name .dump > DB_name.sql 

एसक्यूएल स्क्रिप्ट में एसक्लाइट डेटाबेस निर्यात करता है।

यूआरएल से: http://doc.ubuntu-fr.org/sqlite

+0

उत्कृष्ट उत्तर @ AlbanMar31। यह अच्छी तरह से काम कर रहा है। –

+0

ऐड ऑन अब मृत प्रतीत होता है, फ़ायरफ़ॉक्स संस्करण 57.0 इसे असंगत और अनुपयोगी के रूप में दिखाता है ... –

0

मैं SQLite प्रबंधक का उपयोग करें, फ़ायरफ़ॉक्स ऐड-ऑन लेकिन Fk एसक्यूएल सर्वर में काम नहीं कर रहा मैं के बाद एक मैं कई FK साथ 100 से अधिक तालिका है स्क्रिप्ट को संशोधित करने के लिए है .. वहाँ एक है के आसपास नया काम

7

मुझे पता है कि यह पुराना धागा है, लेकिन मुझे लगता है कि यह समाधान भी यहां होना चाहिए।

  • SQLite के लिए ODBC ड्राइवर स्थापित
  • 64 या सी के लिए
  • भागो odbcad32: \ Windows \ SysWOW64 \ odbcad32.exe x86 के लिए
  • सिस्टम DSN है, जहां आप SQLite3 ODBC ड्राइवर
  • चयन तो फिर तुम भरने बनाएं अप प्रपत्र जहां डेटाबेस नाम SQLite डेटाबेस

फिर एसक्यूएल सर्वर में sysadmin अंतर्गत चलाने के लिए filepath है

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

चुनें * ओपन एसक्यूएल से SQLServerDATA (OldSQLite, 'SQLiteData से चुनें *) ---------- --------- और आप 64 बिट्स के लिए ड्राइवर स्थापित कर सकते हैं और 64 बिट्स के लिए ओडीबीसी बना सकते हैं (system32 फ़ोल्डर में odbcad32 - SQLite3 ओडीबीसी चालक) –

0

एक विचार ऐसा कुछ करता है: - एसक्यूएल लाइट में स्क्वामा देखें और CREATE TABLE कमांड प्राप्त करें। - SQL सर्वर में एसक्यूएल को निष्पादित करें, प्रत्येक पंक्ति के लिए एक INSERT स्टेटमेंट बनाने वाला ट्रैवल डेटा। (parsing sql भी)

यह कोड बीटा है, क्योंकि कोई पता प्रकार डेटा नहीं है, और @parameter और कमांड ऑब्जेक्ट का उपयोग नहीं है, लेकिन चलाएं।

(आप संदर्भ डालने और स्थापित System.Data.SQLite की जरूरत है;)

C#: सम्मिलित सिर में इस कोड (या neccesari) सीएस

प्रणाली का उपयोग करते हुए;

सिस्टम का उपयोग कर। Coollections.Generic;

सिस्टम.Text का उपयोग कर;

सिस्टम.डाटा का उपयोग कर;

System.Data.SqlClient का उपयोग कर;

System.Data.SQLite का उपयोग कर;

सिस्टम का उपयोग कर। थ्रेडिंग;

System.Text.RegularExpressions का उपयोग कर;

System.IO का उपयोग कर;

log4net का उपयोग कर;

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 
    } 
संबंधित मुद्दे